尋找演算法之二分尋找

來源:互聯網
上載者:User

【基本思想是】:首先,將表中間位置記錄的關鍵字與尋找關鍵字比較,如果兩者相等,則尋找成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於尋找關鍵字,則進一步尋找前一子表,否則進一步尋找後一子表。重複以上過程,直到找到滿足條件的記錄,使尋找成功,或直到子表不存在為止,此時尋找不成功。

【演算法複雜度】:假設其數組長度為n,其演算法複雜度為o(log(n))

【二分尋找要求】:1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。

【優點】折半尋找法的優點是比較次數少,尋找速度快,平均效能好;

【缺點】要求待查表為有序表,且插入刪除困難。因此,折半尋找方法適用於不經常變動而尋找頻繁的有序列表。

 

實現代碼:

 

public class BinarySearch {public static void main(String[] args) {int[] array = { 2, 3, 5, 7, 8,9 };int result = binarySearch(array, 3);if (result != -1)System.out.println("已經在數組中找到,索引位置為:" + result);elseSystem.out.println("沒有此原始");}public static int binarySearch(int[] list, int key) {// 最低線int low = 0;// 最高線int high = list.length - 1;while (low <= high) {// 取中間值int middle = (low + high) / 2;if (list[middle] == key) {return middle;} else if (list[middle] > key) {// 下降一半high = middle - 1;} else {// 上升一半low = middle + 1;}}// 未找到return -1;}}運行結果:已經在數組中找到,索引位置為:1

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.