折半查找的实现
注:输入为有序数组
#include <stdio.h>
#define Max 20
int main(){
int a[Max];
int n,l,r,i,ser,mid;
printf("请输入数组的长度:");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
while(1){
printf(" 请输入要查找的数字:");
scanf("%d",&ser);
r=n;
l=0;
while(l<=r){
mid=(r+l)/2;
if(a[mid]==ser){
printf("ser=%d查找成功,所在位置为第%d个",ser,mid+1);
break;
}
else if(ser<a[mid]){
r=mid-1;
}
else if(ser>a[mid]){
l=mid+1;
}
}
if(r<l)
printf("不存在%d这个数",ser);
}
return 0;
}