#include <stdio.h>
/*
二分法:
在一个有序的数组里面 ,查找元素的方法,可以采用二分法。 它时间复杂度是O(logn)
例子:
给一个有序的数组,在一个数字,求出数字在数组的下标。
输入:arr=[1,4,7,8,9],target=7;
输出:ans=2
*/
int main() {
int target = 6; //要找的目标值
int arr[6] = {1,2,6,7,8,9}, n = 6; //n是数组的长度
int left = 0, right = n - 1; //左指针一开始为0, 右指针一开始为n-1
int ans = -1; //ans为目标值的下标,如果没找到,就返回-1。
while (left < right) {
int mid = (left+ right) / 2; //mid为左指针与右指针的中间值
if (arr[mid] == target) { //如果这个中间值所指向的值是目标值 ,就返回下标。
ans = mid;
break;
} else if (arr[mid] < target) { //如果中间的值小于target,左指针向中间值移动
left = mid + 1;
} else if (arr[mid] > target) { //如果中间的值大于target,右指针向中间值移动
right = mid - 1;
}
}
printf("下标为:%d", ans);
return 0;
}
二分搜索法
于 2024-03-09 18:49:25 首次发布