📜  门|门 IT 2008 |问题 12(1)

📅  最后修改于: 2023-12-03 14:58:36.574000             🧑  作者: Mango

门|门 IT 2008 |问题 12

题目描述

在一个有序数组中查找一个数,如果存在返回下标,如果不存在返回-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)

总结

二分查找算法是一种时间复杂度较低的查找算法,适用于对有序元素的查找。在实际应用中可以发挥重要作用。