折半查找+顺序查找
折半查找+顺序查找
#include
#include
#include
#include
#include
#define null 0
int m=0;
int search(int a[],int x){
int low=1;
int high=11;
int mid;
while(low<=high){
m++;
mid=(low+high)/2;
if(a[mid]==x) return mid;
else if(a[mid]>x) high=mid-1;
else low=mid+1;
}
return -1;
}
int query(int a[],int x,int n){
int i;
m++;
for(i=1;i<=n;i++){
if(x==a[i])
return i;
}
if(i==n)
return -1;
}
void main(){
int i,j,z,x;
int a[11]={5,13,19,21,37,56,64,75,80,88,92};
printf("请输入要查找的数:\n");
scanf("%d",&x);
printf("请选择查找的方式:1为折半查找,2为顺序查找");
scanf("%d",&z);
if(z==1)j=search(a,x);
else if(z==2) j=query(a,x,11);
else printf("输入有误");
if(j>0)printf("查找成功,%d存在,在第%d个位子,查找%d次\n",x,j+1,m);
else printf("查找不成功,%d不存在,查找第%d次",x,m);
}