/**
* 遞歸二分查找: 找單個元素在排好序的數組中的位置,沒有則返回-1;
* 核心思想:
* 1.迭代與中間位置元素比較,最終找到位置並返回
* @param elem
* @param array
* @param low
* @param high
* @return
*/
public int binarySearch(int elem, int [] array,int low, int high) {
if(low>high) {
return -1;
}
int middle = (low+high)/2;
if(array[middle] == elem) {
return middle;
}
if(array[middle]<elem) {
//找右邊
return binarySearch(elem,array,middle+1,high);
}
if(array[middle]>elem) {
//找左邊
return binarySearch(elem,array,low,middle-1);
}
return -1;
}
/**
* while(low<high){
* 通過比較來改變low和high的值
* }
* @param array
* @param elem
* @return
*/
public int directBinarySearch(int [] array,int elem) {
int low = 0;
int high = array.length-1;
while(low<high) {
int middle = (low+high)/2;
if(elem>array[middle]) {
low =middle+1;
}else if(elem<array[middle]) {
high = middle-1;
}else {
System.out.println("元素"+elem+"對應的下標爲"+middle);
return middle;
}
}
return -1;
}
二分查找法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.