国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python有序查找算法之二分法實例分析

2020-02-16 11:02:47
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 许昌县| 铜陵市| 石楼县| 白沙| 乌拉特前旗| 盘山县| 华容县| 莱芜市| 左云县| 涟水县| 翁牛特旗| 昌邑市| 巴里| 屯门区| 明光市| 神农架林区| 芒康县| 凭祥市| 南皮县| 磐石市| 滨州市| 淳安县| 宽城| 阳谷县| 来安县| 赣州市| 安龙县| 松江区| 游戏| 灵石县| 汝阳县| 遂平县| 合阳县| 屏东县| 新晃| 汝城县| 新和县| 精河县| 澄迈县| 盘山县| 青阳县|