一、二分法思想
对于已按照关键字排序的序列,经过一次比较后,可将序列分割成两部分,然后只在有可能包含待查找元素的一部分中继续查找,并根据试探结果继续分割,逐步缩小查找范围,直至找到或找不到为止。
二、代码及结果
代码如下(示例):
#include<stdio.h>
#include<string.h>
#include"windows.h"
int main()
{
int arr[] = {1,12,36,45,50,60,72,86,99,101,110};
int num;
printf("请输入要查找的数字:");
scanf("%d", &num);
int high, low=0,flag = 1;
high = (sizeof(arr)/sizeof(arr[0]))-1;
low = 0;
while (low <= high)
{
int mid = (high + low) / 2;
if (arr[mid]<num)
{
low = mid + 1;
}
else if (arr[mid]>num)
{
high = mid - 1;
}
else
{
printf("数组所在的下标:%d\n对应元素是%d \n", mid,arr[mid]);
flag = 0;
break;
}
}
if (flag)
{
printf("找不到! \n");
}
system("pause");
return 0;
}