C語言採用折半查詢法在10個有序數中尋找某個數
阿新 • • 發佈:2021-02-02
【題目】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;
}
【執行結果】