二分查找算法是在有序數組中用到的較爲頻繁的一種算法,在未接觸二分查找算法時,
最通用的一種做法是,對數組進行遍歷,跟每個元素進行比較,其時間爲O(n).
但二分查找算法則更優,因爲其查找時間爲O(lgn)。
舉例說明:例如list={1,2,3,4,5,6,7,8,9},如果要查找元素6,步驟如下:
1.比較6和list中間位置的大小,6>5,則往5的右半部{6,7,8,9}查找
2.比較6和{6,7,8,9}中間位置7的大小,7>6,則在7的左邊查找
3. 7的左邊爲6,6=6,則找到了
具體的代碼如下:
public class Erfen {
/**
* @param args
* @return
* 非遞歸實現
*/
public static int Erfen(int[] list,int low,int high,int num){
while(low<=high){
int middle=(high-low)/2+low;
if (list[middle]==num) {
return middle;
}
else if (list[middle]<num) {
low=middle+1;
}
else{
high=middle-1;
}
}
return -1;
}
public static void main(String[] args) {
int[] list={1,3,4,6,7,9,12,14,45};
int s=Erfen(list,0,list.length-1,121);
System.out.print(s);
}
}