本文實例講述了Python有序查找算法之二分法。分享給大家供大家參考,具體如下:
二分法是一種快速查找的方法,時間復雜度低,邏輯簡單易懂,總的來說就是不斷的除以2除以2...
例如需要查找有序數組arr里面的某個關鍵字key的位置,那么首先確認arr的中位數或者中點center,下面分為三種情況:
① 假如arr[center]>key,說明key在arr中心左邊范圍;
② 假如arr[center]<key,說明key在arr中心右邊范圍;
③ 假如arr[center]=key,說明key在arr中心。
范圍每次縮小一半,寫個while的死循環知道找到為止。
二分法查找非??烨曳浅3S?,但是唯一要求是要求數組是有序的
前面一篇冒泡排序可以去看看:
//www.jb51.net/article/130288.htm
二分法的代碼如下:
# -*- coding: utf-8 -*-def BinarySearch(arr, key): # 記錄數組的最高位和最低位 min = 0 max = len(arr) - 1 if key in arr: # 建立一個死循環,直到找到key while True: # 得到中位數 # 這里一定要加int,防止列表是偶數的時候出現浮點數據 center = int((min + max) / 2) # key在數組左邊 if arr[center] > key: max = center - 1 # key在數組右邊 elif arr[center] < key: min = center + 1 # key在數組中間 elif arr[center] == key: print(str(key) + "在數組里面的第" + str(center) + "個位置") return arr[center] else: print("沒有該數字!")if __name__ == "__main__": print("武林站長站測試結果:") arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93] while True: key = raw_input("請輸入你要查找的數字:") if key == " ": print("謝謝使用!") break else: BinarySearch(arr, int(key))運行結果:

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答