📅  最后修改于: 2023-12-03 15:29:44.098000             🧑  作者: Mango
在一个排好序的数组中(升序或降序),查找给定元素的下标。
可以采用二分查找的算法,使用递归或循环实现。
int BinarySearch(int arr[], int left, int right, int target) {
int mid;
while(left <= right) {
mid = (left + right) / 2;
if(arr[mid] == target) {
return mid;
} else if(arr[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1; //表示未找到
}
int BinarySearch(int arr[], int left, int right, int target) {
if(left > right) {
return -1; //表示未找到
}
int mid = (left + right) / 2;
if(arr[mid] == target) {
return mid;
} else if(arr[mid] > target) {
return BinarySearch(arr, left, mid - 1, target);
} else {
return BinarySearch(arr, mid + 1, right, target);
}
}
时间复杂度为 O(log n),性能较好。注意要求输入的数组必须是有序的。