一,什么是二分查找
二分查找,是一种在有序数组中查找某一特定元素的查找算法。
二,算法思路
(令左右下标分别为left,right,其中left初始值为0,rightd的初始值为sizeof(arr)/sizeof(arr[0])-1
令中间元素的下标mid为(right+left)/2)。查找从中间元素开始,若查找的元素大于或小于中间元素,则在数组元素大于或小于中间元素的那一半中查找。直到中间元素正好是要查找元素,若left<=right,则表示找到了;若right<left,则 表示找不到。
三,算法图解
我们以如图数组(arr)为例,假设元素7为我们要查找的元素。
四,代码实现
#include<stdio.h>
int main()
{
int arr[] = { 1,3,5,7,9,11,13 };
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
int mid = 0;
printf("请输入要查找的数字:\n");
int n = 0;
scanf("%d", &n);
while (left <= right)
{
mid = (left + right) / 2;
if (arr[mid] < n)
{
left = mid + 1;
}
else if (arr[mid] > n)
{
right = mid - 1;
}
else
{
break;
}
}
if (left <= right)
printf("找到了,下标是:%d", mid);
else
printf("没找到");
return 0;
}