有15个整数按升序排列,输入一个数,用折半查找法判断该数在序列中是否存在,若存在则指出是第几个。
折半查找法:a0.a1.a2.a3.a4.……a14
x<7在0-7找,x>7在7-14找
#include<stdio.h>
#include<stdlib.h>
void main()
{
int a[15] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
int x, top, mid, bot;
top = 0;
bot = 14;
printf("输入一个数:");
scanf("%d", &x);
while (top <= bot){
mid = (top + bot) / 2;
if (x == a[mid]) // 是逻辑==,而不是赋值=
{
printf("输出%d", mid);
exit(0);
}
else
if (x>mid)
top = mid + 1;
else
{
bot = mid - 1;
}
}
printf("不存在");
return;
}