程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Python二分法搜索算法實例分析

Python二分法搜索算法實例分析

編輯:更多關於編程

       這篇文章主要介紹了Python二分法搜索算法,實例分析了Python實現二分法的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

      今天看書時,書上提到二分法雖然道理簡單,大家一聽就明白但是真正能一次性寫出別出錯的實現還是比較難的,即使給了你充足的時間,比如1小時。如果你不是特別認真的話,可能還是會出一些這樣那樣的錯誤,所以就嘗試了自己去實現一下,看能否一次通過,結果自然不言而喻,雖然用的時間不長,但是我失敗了,呵呵。

      個人覺得失敗的最主要原因是自己沒有認真的先想好這個思路和可能出現的分支情況,而是直接憑主觀臆想就去寫代碼了,完全正中書上所說的行為,所以也如書上所說,出錯了。後經調試應該是得到了基本的正確算法,內容如下:

      ?

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #!/usr/bin/env python #encoding: utf-8 def half_search(search_arr, search_str): lb = 0 ub = len(search_arr) - 1 for i in range(ub/2 + 1): if lb > ub: return -1 mid = (ub + lb)/2 if search_arr[mid] == search_str: return mid elif search_arr[mid] > search_str: ub = mid - 1 else: lb = mid + 1 if __name__=='__main__': arr = [10,20,30,40,50,60,70] print half_search(arr, 1) print half_search(arr, 11) print half_search(arr, 22) print half_search(arr, 33) print half_search(arr, 40) print half_search(arr, 55) print half_search(arr, 66) print half_search(arr, 70) print half_search(arr, 8)

      結果:

      ?

    1 2 3 4 5 6 7 8 9 -1 -1 -1 -1 3 -1 -1 6 -1

      正整數代表在數組中的下標,3那就是第4個位置;-1代表不存在

      總結:

      實現簡單的算法之前,如果已經有了一套最簡易的實現【比如直接打印100條相似的內容】,不妨要想想是否還有更精巧的實現【可否用循環+參數化替代】;實現稍微復雜點的算法時,不妨先在紙上畫出各種可能的驗證情況,避免實現是缺胳膊短腿的;還有一點就是算法什麼的還是要多練,不然稍微復雜的過一陣可能就會忘記細節了。我想這就叫術業有專攻吧!

      希望本文所述對大家的Python程序設計有所幫助。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved