C++はまず配列を並べ替えて、折り返し検索を行います

2594 ワード

ステップ1:15個の整数を入力
ステップ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;  }