二分查找

模板一:

public static int erfenchazhao(int[] nums,int target){

if(nums==null||nums.length==0)return -1;

int left=0,right=nums.length-1;

whilt(left<=right){

int mid=left+(right-left)/2;

if(nums[mid]==target)return mid;

else if(nums[mid]<target)left=mid+1;

else right=mid-1;

}

return -1;//left>right

}

模板二

int binarySearch(int[] nums, int target){

if(nums == null || nums.length == 0)

return -1;

int left = 0, right = nums.length;

while(left < right){

// Prevent (left + right) overflow

int mid = left + (right - left) / 2;

if(nums[mid] == target){ return mid; }

else if(nums[mid] < target) { left = mid + 1; }

else { right = mid; }

}

// Post-processing:

// End Condition: left == right

if(left != nums.length && nums[left] == target) return left;

return -1;

}

模板三

int binarySearch(int[] nums, int target) {

if (nums == null || nums.length == 0)

return -1;

int binarySearch(int[] nums, int target) {

if (nums == null || nums.length == 0)

return -1;

int left = 0, right = nums.length - 1;

while (left + 1 < right){

    // Prevent (left + right) overflow

    int mid = left + (right - left) / 2;

    if (nums[mid] == target) {

        return mid;

    } else if (nums[mid] < target) {

        left = mid;

    } else {

        right = mid;

    }

}

// Post-processing:

// End Condition: left + 1 == right

if(nums[left] == target) return left;

if(nums[right] == target) return right;

return -1;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。