LeetCode-704.二分查找

链接:

704. 二分查找 - 力扣(LeetCode) (leetcode-cn.com)

题设:

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

利用JAVA实现:

class Solution {
 public int search(int[] nums, int target) {
        // 避免当 target 小于nums[0] nums[nums.length - 1]时多次循环运算
        if (target < nums[0] || target > nums[nums.length - 1]) {
            return -1;
        }
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = left + ((right-left)/2);
            if (nums[mid] == target)
                return mid;
            else if (nums[mid] < target)
                left = mid + 1;
            else if (nums[mid] > target)
                right = mid - 1;
        }
        return -1;
    }

}

其中 (right-left)/2 也可写作 (right-left)>>1

>>为右移运算符,运算结果正好能对应一个整数的二分之一值,这就正好能代替数学上的除2运算,但是比除2运算要快。


版权声明:本文为wodengniyujiul原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。