二分查找(Binary Search)是一种在有序数组中查找特定元素的高效算法。它通过不断将搜索范围减半来查找目标元素。其时间复杂度为 O(log n),这是因为每一步都将搜索范围减半,因此算法的性能非常高。
二分查找的基本思想是:
mid
。mid
处的元素与目标元素 target
。
mid
处的元素等于 target
,则找到了目标元素,返回 mid
。mid
处的元素小于 target
,则目标元素在 mid
右侧,更新 left。mid
处的元素大于 target
,则目标元素在 mid
左侧,更新 right。‘
- #include
-
- int find(int arr[], int size, int userVo)
- {
- int left = 0;
- int right = size - 1;
- while (left <= right)
- {
- int mid = (right + left) / 2;
- if (userVo == arr[mid])
- {
- return mid;
- /* code */
- }
- else if (userVo <= arr[mid])
- {
- /* code */
- right = mid - 1;
- }
- else
- {
- left = mid + 1;
-
- /* code */
- };
- };
- };
-
- int main()
- {
- int arr[] = {1,2,3,4,5,7,8,9};
- int size = sizeof(arr) / 4;
- int userVo = 3;
- int index = find(arr, size, userVo);
- printf("%d", index);
- return 0;
- }