C++はまず配列を並べ替えて、折り返し検索を行います
2594 ワード
ステップ1:15個の整数を入力
ステップ2:この15の数をソート
第三部:一つの数を入力し、後から順番に並べた数の中で半減検索を行い、その数の位置を判断する
実装コードは次のとおりです.
方法1:
選択ソート法+ループ折半検索法
2つ目の方法:
バブルソート+再帰折半ルックアップ
ステップ2:この15の数をソート
第三部:一つの数を入力し、後から順番に並べた数の中で半減検索を行い、その数の位置を判断する
実装コードは次のとおりです.
方法1:
選択ソート法+ループ折半検索法
#include
using namespace std;
int main(){
int a[15];
int n,i;
void array_sort(int a[], int n);
int zeban(int a[], int start ,int end,int n);
cout< for(i=0;i<15;i++){
cin>>a[i];
}
cout< //============== ========
array_sort(a,15);
//======= ====
for(i=0;i<15;i++){
cout< }
cout< cout< cin>>n;
//============================
cout< cout< return 0;
}
void array_sort(int a[],int n){
int i,j,k,tool;
for(i=0;i k=i;
for(j=(i+1);j if(a[j] k=j;
}
}
tool=a[i];
a[i]=a[k];
a[k]=tool;
}
}
int zeban(int a[],int start,int end,int n){
int tag=-1;
for(start=0,end=14;start<=end;){
if(n==a[(start+end)/2]){
tag=(start+end)/2+1;
return tag;
}else if(n end=(start+end)/2;
}else if(n>a[(start+end)/2]){
start=(start+end)/2;
}
}
}
2つ目の方法:
バブルソート+再帰折半ルックアップ
#include
using namespace std;
int main(){
int a[15];
int n,i;
void array_sort(int a[], int n);
int IterBiSearch(int data[], const int x, int beg, int last);
cout< for(i=0;i<15;i++){
cin>>a[i];
}
cout< //============== ========
array_sort(a,15);
//======= ====
for(i=0;i<15;i++){
cout< }
cout< cout< cin>>n;
//============================
cout< cout< return 0;
}
void array_sort(int a[],int n){
int i,j,tool;
for(i=0;i for(j=0;j if(a[j]>a[j+1]){
tool=a[j];
a[j]=a[j+1];
a[j+1]=tool;
}
}
}
}
int IterBiSearch(int data[], const int x, int beg, int last)
{
int mid = -1;
mid = (beg + last) / 2;
if (x == data[mid])
{
return (mid+1);
}
else if (x < data[mid])
{
return IterBiSearch(data, x, beg, mid - 1);
}
else if (x > data[mid])
{
return IterBiSearch(data, x, mid + 1, last);
}
return -1;
}