折半查找法:即在一个有序数列中,拿着需要查找的数字,与数列中间项进行比较,如果大于中间项,那么把中间项变为最小项接着进行对比,以此类推。(如果小于,是一样的方法)
具体操作如下:
void zbcz(int n)
{
int a[15] = { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 };
int min=1;
int max=15;
int mid=0;
while (min + 1 != max)
{
if (n == a[(max - 1)])
{
printf("输入的数在数列的第%d位\n", max);
break;
}
else if (n == a[(min - 1)])
{
printf("输入的数在数列的第%d位\n", min);
break;
}
if (n > a[(min - 1)] || n<a[(max - 1)])
{
printf("输入的数不在数列中\n");
break;
}
mid = (min + max) / 2;
if (n > a[mid])
{
max = mid;
}
else if (n < a[mid])
{
min = mid;
}
else
{
printf("输入的数在数列的第%d位\n", mid+1);
break;
}
}
}