前言
C语言采用折半查找法在10个有序数中寻找某个数,如果找到,输出其所在数组中下标的位置,否则,输出没找到。
程序源码
#include <stdio.h>
int main(void)
{
int up=10, low=1, mid, found=0, find;
int a[10]= {1, 5, 6, 9, 11, 17, 25, 34, 38, 41};
scanf("%d", &find);
printf("\n");
while (up >= low || !found)
{
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;
}
}
if(found)
printf("found number is %dth.\n", mid);
else
printf("no found.\n");
return 0;
}