因為我們初始化 right = nums.length - 1
所以決定了我們的「搜索區(qū)間」是 [left, right]
所以決定了 while (left <= right)
同時也決定了 left = mid+1 和 right = mid-1
因為我們只需找到一個 target 的索引即可
所以當 nums[mid] == target 時可以立即返回
/**
* 二分查找
*/
public class erFen {
private static final String TAG = "erFen";
public static void main(String[] args){
int[] array = new int[100];
for(int i=0; i<100;i++){
array[i] = i;
}
System.out.println(binarySearch(array, 31));
}
private static int binarySearch(int[] array, int target){
int start=0;//最小下標
int end=array.length-1;//最大下標
int mid;//中間下標
while (start<=end){
// mid=start+(end-start)/2;
mid=(end+start)/2; //折半下標
if (target>array[mid]){//關(guān)鍵字比折半值大袜漩,則最小下標調(diào)成折半下標的下一位
start=mid+1;
}else if (target<array[mid]){//關(guān)鍵字比折半值小绰寞,則最大下標調(diào)成折半下標的前一位
end=mid-1;
}else {
return mid;
}
}
return -1;
}
}