/*
折半查找法!
*/
# include <stdio.h>
# define N 10
int main(void)
{
int i, num;
int data[] = {13,15,23,29,30,31,38,45,56,69}; //在数组中存放10个整数;
int low=0, high=N-1, mid;//定义数组中最低、最高及中间元素;
printf("Please input a num:\n");
scanf("%d", &num); //输入查找的数字;
for(i=0; i<N; ++i)
{
if(i%5 == 0 && i!=0)
printf("\n"); //每显示5行换行,以排列整齐;
printf("data[%d]=%d ", i, data[i]); //输出赋值好的数组内的所有元素;
mid = (low+high)/2;//计算出中间值;
}
while(low<=high)
{
mid = (low+high)/2;//计算中间值,第一次为(0+9)/2=4,data[4]为第五个数字30;
if(num == data[mid])
{
printf("\nFind %d, It is data[%d]!", num, mid);
break;
}
else if(num > data[mid])
low = mid+1; //注意:是mid+1而非low+1;
else
high = mid-1;
}
if(low>high) //无该数字,查找失败。
printf("\n%d is not in data[]", num);
printf("\nlow = %d, high = %d", low, high);
putchar('\n');
return 0;
}
数组_例题:折半查找法
最新推荐文章于 2024-08-12 00:08:19 发布