分析: 此题目的是找到k=7的数(k的值可随便更改,如果数组中没有k对应的值,则找不到这个数字),并且输出查找次数。
代码:
#include<stdio.h>
int main() {
int array[10] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7; /*找到7这个数字*/
int sz = sizeof(array) / sizeof(array[0]); /*计算元素个数*/
int left = 0;
int right = sz - 1;
int index = 0;
while (left<=right)
{
int mid = (left + right) / 2;
index++;
if (array[mid] > k)
{
right = mid - 1;
}
else if (array[mid] < k)
{
left = mid + 1;
}
else
{
printf("找到了%d\n",k);
break;
}
}
printf("查找了%d次\n", index);
if (left > right)
{
printf("找不到\n");
}
return 0;
}
运行结果:
折半查找(Binary Search)又称为二分查找。它的前提是线性表中的记录必须是关键码有序(通常从小到大有序),线性表必须采用顺序存储。