数据结构综合实验--折半查找
要求:
输入一组整数,以空格分隔,以-1结束,输入一个关键字,用折半查找法在这组数中查找该关键字,输出找到该关键字的比较次数。假设在这组数中存在该关键字。输入输出示例如下。
输入:
2 3 4 8 9 -1 4 //4是待查找的关键字
输出:
1
源码:
#include <stdio.h>
#define MAX 10000
int main(void)
{
int count=0;
int up=0, low=0, mid, found=0, find;
int a[MAX]= {0};
while (MAX)
{
int x;
scanf("%d", &x);
up++;
if (x!=-1)
{
a[up]=x;
}
else
{
a[up]=x;
break;
}
}
scanf("%d", &find);
while (up >= low || !found)
{
count++;
mid = (up + low) / 2;
if(a[mid] == find)
{
found = 1;
break;
}
else if(a[mid] > find)
{
if(a[mid] > find && a[mid+1] < find)
{
found = 0;
break;
}
up = mid - 1;
}
else
{
if(a[mid] < find && a[mid + 1] > find)
{
found = 0;
break;
}
low = mid + 1;
}
if(mid <=0 || mid >= 9)
{
found = 0;
break;
}
}
printf("%d", count);
return 0;
}