二分查找(Binary Search)是一种在有序数组中查找特定元素的高效算法。它通过不断将搜索范围减半来查找目标元素。其时间复杂度为 O(log n),这是因为每一步都将搜索范围减半,因此算法的性能非常高。
二分查找的基本思想是:
- 初始化: 在开始时,确定搜索范围的起始位置 left 和结束位置 right。
- 计算中点: 在每一次迭代中,计算搜索范围的中点
mid
。 - 比较: 比较中点
mid
处的元素与目标元素target
。- 如果
mid
处的元素等于target
,则找到了目标元素,返回mid
。 - 如果
mid
处的元素小于target
,则目标元素在mid
右侧,更新 left。 - 如果
mid
处的元素大于target
,则目标元素在mid
左侧,更新 right。
- 如果
- 继续搜索: 重复上述步骤,直到 left超过 right或找到目标元素。
‘
Dome
#include <stdio.h>
int binarySearch(int arr[], int size, int target)
{
// 设置左边的值
int left = 0;
// 设置右边的值
int right = size - 1;
// 设置中间值
int middle = size / 2;
while (left <= right)
{
/* code */
if (arr[middle] == target)
{
/* code */
printf("值为:%d", middle);
return middle;
}
else if (target < arr[middle])
{
/* code */
left = middle + 1;
}
else
{
right = middle - 1;
};
middle = (right - left) / 2;
};
return -1;
};
int main()
{
int arr[] = {1,2 ,3,4,5,6,7,8};
// 数组长度
int size = sizeof(arr) / sizeof(arr[0]);
// 寻找的数字
int target = 2;
binarySearch(arr, size, target);
return -1;
};