本文實例講述了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程序設計有所幫助。
新聞熱點
疑難解答