<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
二分法是一種效率比較高的搜尋方法
回憶之前做過的猜數位的小遊戲,預先給定一個小於100的正整數x,讓你猜猜測過程中給予大小判斷的提示,問你怎樣快速地猜出來?
我們之前做的遊戲給定的是10次機會,如果我們學會.二分查詢法以後,不管數位是多少,最多隻需要7次就能猜到數位。
1、必須是有序的序列。
2、對資料量大小有要求。
資料量太小不適合二分查詢,與直接遍歷相比效率提升不明顯。
資料量太大也不適合用二分查詢,因為陣列需要連續的儲存空間,若資料量太大,往往找不到儲存如此大規模資料的連續記憶體空間。.
假設有一個有序列表如下:
請問數位11是否在此列表中,如果在它的索引值為多少?
實現程式碼
arr_list = [5, 7, 11, 22, 27, 33, 39, 52, 58] # 需要查詢的數位 seek_number = 11 # 儲存一共查詢了幾次 count = 0 # 列表左側索引 left = 0 # 列表右側索引 right = len(arr_list) - 1 # 當左側索引小於等於右側索引時 while left <= right: # 取中間的索引位置 middle = (left + right) // 2 # 查詢次數進行累加 count += 1 # 如果查詢的數位大於中間位置的數位時 if seek_number > arr_list[middle]: # 左側索引為中間位置索引+1 left = middle + 1 # 如果查詢的數位小於中間位置的數位時 elif seek_number < arr_list[middle]: # 右側索引為中間位置索引-1 right = middle - 1 # 如果等於中間索引資料 else: print('數位:%s找到了,索引值為:%s' % (seek_number, middle)) break else: print("數位%s 沒有找到" % seek_number) print("一共用了:%s次查詢" % count)
執行結果
在迴圈中定義了一個變數count,如果第一次迴圈後count沒有變化,就說明輸入的是有序序列,這時我們直接return退出迴圈,這時候的時間複雜度為O(n)
實現程式碼
arr_list = [5, 7, 11, 22, 27, 33, 39, 52, 58] def binary_search(seek_number, left, right): if left <= right: middle = (left + right) // 2 if seek_number < arr_list[middle]: right = middle - 1 elif seek_number > arr_list[middle]: left = middle + 1 else: return middle # 進行遞迴呼叫 return binary_search(seek_number, left, right) # 當左側索引大於右側索引時,說明沒有找到 else: return -1 # 查詢的數位 seek_number = 11 # 列表左側索引 left = 0 # 列表右側索引 right = len(arr_list) - 1 print("查詢的數位:%s,索引為:%s" % (seek_number, binary_search(seek_number, left, right)))
執行結果
以上就是Python演演算法練習之二分查詢演演算法的實現的詳細內容,更多關於Python二分查詢演演算法的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45