折半查找的实现
1000(ms)
10000(kb)
2857 / 11133
编写程序实现折半查找算法。
输入
第一行是查找表的长度n
第二行是查找表中的数据元素 ;
第三行是要查找的数据元素的关键字.
输出
查找成功返回位序,不成功返回-1 ,第二行为比较的次数。
样例输入
11
5 13 19 21 37 56 64 75 80 88 92
100
样例输出
-1
4
#include<stdio.h>
int main()
{
int n;
int a[100];
int data;
int min,mid,max;
int t=0;//设置标记
int k=0;//统计比较次数
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
scanf("%d",&data);
min=0;max=n-1;
while(min<=max)
{
k++;
mid=(min+max)/2;
if(a[mid]==data)
{
printf("%d\n%d",mid,k);
t=1;
break;
}
else if(a[mid]<data)
{
min=mid+1;
}
else if(a[mid]>data)
{
max=mid-1;
}
}
if(t==0)
printf("-1\n%d",k);
}