91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Python語言實現二分法查找

發布時間:2022-03-14 13:33:31 來源:億速云 閱讀:135 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何使用Python語言實現二分法查找”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何使用Python語言實現二分法查找”這篇文章吧。

前言:

二分法也就是二分查找,它是一種效率較高的查找方法

假如公司新來了一個人,叫張三,他是你們公司第47個人,過了一段時間后,有些人呢看張三不爽,離職了,那這時候張三肯定不是公司第47個人了,怎么樣才知道張三排第幾呢,下面我們用二分法把他找出來

思路:

給你一本1000頁的書籍,隨機給定一個頁碼,如何用最快的方式找到它?如果一頁一頁逐步去查找,則最高需要查找一千次!那我們如何用二分法來解決這個問題呢?二分法的關鍵就是二分這個詞。

如何使用Python語言實現二分法查找

 步驟1:設定一個頁碼作為中心點來將1000頁分為兩份,中位數的作用就是每次縮小一半查找范圍,即達到開方的效果。即可以用 (首位+末位)/2 = 中位數。

如何使用Python語言實現二分法查找

 步驟2:將需要查找的頁碼與中位數比價,如果大于中位數則舍棄對中位數的前一半查找,反之則舍棄對后一半范圍查找,達成開方效果。 步驟3:在新的查找范圍重新計算出中位數 

如何使用Python語言實現二分法查找

步驟4:查找頁碼對比中位數,確定新的查找范圍

如何使用Python語言實現二分法查找

步驟5:循環以上步驟,直到找到該頁碼為止

如何使用Python語言實現二分法查找

代碼:

通過以上思路解析,我們知道了二分法實行步驟,接下來就通過代碼來實現步驟,首先是循環實現

#模擬頁碼
array = [1, 3, 4, 6, 7, 8, 9, 11, 15, 17, 19, 21, 22, 25, 29, 33, 38, 69,99,107]
#首位值
low = 0
#末位值
height = len(array)-1
#設定查找頁碼
findNum = 1
 
#循環查找
while True:
    #獲取中位數
    mid = int((low+height)/2)
    #打印中位數,查看循環次數
    print(array[mid])
    #如果中位數小于查找值,則鎖定后半段
    if array[mid] < findNum:
        #重置低位數
        low = mid + 1
    #如果中位數大于查找值,則鎖定前半段
    elif array[mid] > findNum:
        #重置高位值
        height = mid - 1
    #找到數字則打印該值下標,終止循環
    elif array[mid]==findNum:
        print('find it:',array[mid],' index:',mid)
        break

除了上述方式外,也可以使用遞歸來實現,代碼更加簡潔

array = [1, 3, 4, 6, 7, 8, 9, 11, 15, 17, 19, 21, 22, 25, 29, 33, 38, 69,99,107]
 
#函數遞歸
#定義一個函數,給三個形參:低位值,高位值,查找值
def BinarySearch(low,height,findNum):
    #計算出中位數
    middle = (low+height)//2
    #如果中位數小于查找值,則鎖定后半段
    if findNum >array[middle]:
        #重置低位數
        low = middle +1
    #如果中位數大于查找值,則鎖定前半段
    elif findNum<array[middle]:
        #重置高位值
        height = middle - 1
    else:
        #找到該值并返回
        return '該值下標為:%s,值為:%s'%(middle,array[middle])
    #沒有找到則調用自身繼續查找
    return BinarySearch(low,height,findNum)
 
print(BinarySearch(array[0],len(array)-1,19))

總結:

如何使用Python語言實現二分法查找

根據結果反饋,使用二分法常規Python檢索用循環方式找數字21,他是排在11位,中位數查詢3次,使用Python二分法檢索遞歸方式先取查詢數字的倍數,然后鎖定前半段進行索引,索引的步驟耗時更少

以上是“如何使用Python語言實現二分法查找”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹寨县| 东海县| 平潭县| 信阳市| 建湖县| 英超| 方山县| 龙游县| 固始县| 利辛县| 平阳县| 苏尼特左旗| 自治县| 陕西省| 隆昌县| 万年县| 凤台县| 临颍县| 新营市| 嵊泗县| 金沙县| 昭苏县| 鞍山市| 泗洪县| 英山县| 班戈县| 扎囊县| 图木舒克市| 泰来县| 翼城县| 东辽县| 密山市| 广宗县| 昌黎县| 墨竹工卡县| 尖扎县| 万宁市| 修水县| 苏州市| 交口县| 岑溪市|