适用:适用于知道顺序的数组元素
二分查找思想:
代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int binarysearch(int arr[], int size, int key)
{
int left = 0;
int right = size - 1; // 右侧值
int mid = 0; // 记录中间元素的下标
int flag = 0; // 用于记录是否查找到的标志
while (left <= right)
{
mid = (right + left) / 2; // mid = left+(right-left)/2
if (arr[mid] > key)
{
right = mid - 1; // 更新右侧索引
}
else if (arr[mid] < key)
{
left = mid + 1; // 更新左侧索引
}
else
{
flag = 1;
break;
}
}
if (flag == 0)
{
printf("没有找到\n");
}
if (flag == 1)
{
printf("找到了\n");
printf("该元素的下标为:%d\n", mid); // 输出找到的元素的索引下标
}
return flag;
}
int main()
{
int array[10] = { 11,12,13,14,15,16,17,18,19,20 };
int keynumber = 0;
printf("请输入你要查找的元素:");
scanf("%d",&keynumber); // 这个数字不在数组中,所以应该会输出“没有找到”
binarysearch(array, 10, keynumber); // 这里传递数组的大小作为第二个参数
return 0;
}