二分查詢題目
輸入一個 n 個元素升序的整型陣列 nums , 再輸入一個目標值 target 。 編寫一個方法: 使用二分法, 查詢 nums 中的 target, 如果target存在, 則返回在陣列中的下標, 否則返回 -1。陣列上任意一點的值:nums[i]
二分法查詢流程
第一步
在陣列中,取得中間下標。 中間下標=(最大下標-最小下標)/2+最小下標第二步
判斷中間下標的值和目標值target是否相等。
相等
直接返回中間下標中間下標的值小於目標值target
縮小查詢範圍,將最小下標變為中間下標+1中間下標的值大於目標值target
縮小查詢範圍,將最大的下標變為中間下標-1程式碼示例
package com.binary;
public class Binary {
//建立二分查詢的方法,入參1:nums、入參2:target
public int search(int[] nums,int target){
int low=0;
int high=nums.length-1;
while(low<=high){
int mid=(high-low)/2+low;
int num=nums[mid];
if(num==target){
return mid;
} else if(num>target){
high=mid-1;
} else {
low=mid+1;
}
}
return -1;
}
public static void main(String[] args) {
int[] nums={1,2,3,4,5};
int target=2;
int result=new Binary().search(nums,target);
System.out.println("應該輸出的下標值為:1,實際輸出的下標值為:"+result);
}
}