第一步:输入15个整数
第二步:对这15个数进行排序
第三部:输入一个数,在后在排好序的数中进行折半查找,判断该数的位置
实现代码如下:
方法一:
选择排序法+循环折半查找法
复制代码 代码如下:
#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<<"Please input 15 numbers:"<
cin>>a[i];
}
cout<<"Sorted order:"<
array_sort(a,15);
//=======输出排序完成的数组====
for(i=0;i<15;i++){
cout< }
cout<
cin>>n;
//================折半查找==========
cout<
}
void array_sort(int a[],int n){
int i,j,k,tool;
for(i=0;i
for(j=(i+1);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;
}
}
}
第二种方法:
冒泡排序法+递归折半查找法
复制代码 代码如下:
#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<<"Please input 15 numbers:"<
cin>>a[i];
}
cout<<"Sorted order:"<
array_sort(a,15);
//=======输出排序完成的数组====
for(i=0;i<15;i++){
cout< }
cout<
cin>>n;
//================折半查找==========
cout<
}
void array_sort(int a[],int n){
int i,j,tool;
for(i=0;i
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;
}



