最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python語言實現(xiàn)二分法查找

 更新時間:2022年03月14日 09:42:20   作者:五包辣條!  
這篇文章主要介紹了Python語言實現(xiàn)二分法查找,二分法也就是二分查找,它是一種效率較高的查找方法,下文詳細介紹,需要的小伙伴可以參考一下

前言:

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

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

思路:

給你一本1000頁的書籍,隨機給定一個頁碼,如何用最快的方式找到它?如果一頁一頁逐步去查找,則最高需要查找一千次!那我們?nèi)绾斡枚址▉斫鉀Q這個問題呢?二分法的關(guān)鍵就是二分這個詞。

 

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

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

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

步驟5:循環(huán)以上步驟,直到找到該頁碼為止

代碼:

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

#模擬頁碼
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
#設(shè)定查找頁碼
findNum = 1
?
#循環(huán)查找
while True:
? ? #獲取中位數(shù)
? ? mid = int((low+height)/2)
? ? #打印中位數(shù),查看循環(huán)次數(shù)
? ? print(array[mid])
? ? #如果中位數(shù)小于查找值,則鎖定后半段
? ? if array[mid] < findNum:
? ? ? ? #重置低位數(shù)
? ? ? ? low = mid + 1
? ? #如果中位數(shù)大于查找值,則鎖定前半段
? ? elif array[mid] > findNum:
? ? ? ? #重置高位值
? ? ? ? height = mid - 1
? ? #找到數(shù)字則打印該值下標,終止循環(huán)
? ? elif array[mid]==findNum:
? ? ? ? print('find it:',array[mid],' index:',mid)
? ? ? ? break

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

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

總結(jié):

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

到此這篇關(guān)于Python語言實現(xiàn)二分法查找的文章就介紹到這了,更多相關(guān)Python二分法查找內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何實現(xiàn)Python編寫的圖形界面可以自由拖動

    如何實現(xiàn)Python編寫的圖形界面可以自由拖動

    我們使用python中的tkinter進行編程時,往往需要一種功能就是我們可以隨意拖動這個界面,放置在任何位置,下面我們就來看看Python如何實現(xiàn)這一效果吧
    2024-11-11
  • 從零教你安裝pytorch并在pycharm中使用

    從零教你安裝pytorch并在pycharm中使用

    本文詳細介紹了如何使用Anaconda包管理工具創(chuàng)建虛擬環(huán)境,并安裝CUDA加速平臺和PyTorch庫,同時在PyCharm中配置和使用PyTorch進行深度學習任務(wù),需要的朋友可以參考下
    2025-02-02
  • python logging通過json文件配置的步驟

    python logging通過json文件配置的步驟

    這篇文章主要介紹了python logging通過json文件配置的步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python 通過截圖匹配原圖中的位置(opencv)實例

    Python 通過截圖匹配原圖中的位置(opencv)實例

    今天小編就為大家分享一篇Python 通過截圖匹配原圖中的位置(opencv)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python利用matplotlib生成圖片背景及圖例透明的效果

    Python利用matplotlib生成圖片背景及圖例透明的效果

    這篇文章主要給大家介紹了Python利用matplotlib生成圖片背景及圖例透明效果的相關(guān)資料,文中給出了詳細的示例代碼,相信對大家具有一定的參考家價值,需要的朋友們下面來一起學習學習吧。
    2017-04-04
  • Python  連接字符串(join %)

    Python 連接字符串(join %)

    join 方法用于連接字符串數(shù)組,使用 % 連接多個變量下面看例子
    2008-09-09
  • Python第三方庫安裝緩慢的解決方法

    Python第三方庫安裝緩慢的解決方法

    這篇文章主要給大家介紹了關(guān)于Python第三方庫安裝緩慢的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • python實現(xiàn)對變位詞的判斷方法

    python實現(xiàn)對變位詞的判斷方法

    這篇文章主要為大家詳細介紹了python實現(xiàn)對變位詞的判斷方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 基于Python編寫一個有趣的年會抽獎系統(tǒng)

    基于Python編寫一個有趣的年會抽獎系統(tǒng)

    這篇文章主要為大家詳細介紹了如何使用Python編寫一個簡易的抽獎系統(tǒng),順便幫助大家鞏固一下對Python語法和框架的理解,感興趣的小伙伴可以了解下
    2023-12-12
  • python判斷鏈表是否有環(huán)的實例代碼

    python判斷鏈表是否有環(huán)的實例代碼

    在本篇文章里小編給大家整理的是關(guān)于python判斷鏈表是否有環(huán)的知識點及實例代碼,需要的朋友們參考下。
    2020-01-01

最新評論

富锦市| 龙州县| 壶关县| 张家界市| 重庆市| 敖汉旗| 新邵县| 开封市| 吉木乃县| 武乡县| 阿瓦提县| 保定市| 扎赉特旗| 葫芦岛市| 安义县| 兴化市| 和林格尔县| 建阳市| 洛阳市| 南投县| 黎川县| 水城县| 德庆县| 潢川县| 淄博市| 漳州市| 梅河口市| 津南区| 阜康市| 彭山县| 五莲县| 杭锦后旗| 玉屏| 枣阳市| 新巴尔虎右旗| 高淳县| 墨脱县| 马龙县| 双城市| 株洲县| 佛教|