1.二分查找法,只能在作用於有序數列。
private static int binarySearch(Comparable[] arr,Comparable target){
//arr[r,r]之間查找
int l = 0, r= arr.length -1;
while(l<=r){
//mid = (l+r)/2 可能產生大整數越界
int mid = l + (r-l)/2;
if(arr[mid].compareTo(target)==0){
return mid;
}
if(arr[mid].compareTo(target)<0){
r = mid-1;
}else{
l = mid+1;
}
}
//未找到
return -1;
}
2.排序的數據中有很多相等元素時,二分查找法增加floor和ceil定義