算法之—二分查找算法

二分查找算法是在有序數組中用到的較爲頻繁的一種算法,在未接觸二分查找算法時,
最通用的一種做法是,對數組進行遍歷,跟每個元素進行比較,其時間爲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);
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章