📅  最后修改于: 2023-12-03 14:58:36.574000             🧑  作者: Mango
在一个有序数组中查找一个数,如果存在返回下标,如果不存在返回-1。
由于数组是有序的,可以采用二分查找算法。首先确定一个中间数,如果中间数等于目标数则返回中间数的下标,如果中间数大于目标数则在左半部分数组中继续查找,否则在右半部分数组中继续查找,直到找到目标数或者整个数组都被查找完。
以下是Java代码实现:
public static int binarySearch(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
时间复杂度:O(log n)
空间复杂度:O(1)
二分查找算法是一种时间复杂度较低的查找算法,适用于对有序元素的查找。在实际应用中可以发挥重要作用。