真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何使用Python實(shí)現(xiàn)二分法查找

這篇文章主要介紹“如何使用Python實(shí)現(xiàn)二分法查找”,在日常操作中,相信很多人在如何使用Python實(shí)現(xiàn)二分法查找問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何使用Python實(shí)現(xiàn)二分法查找”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)專注于岑鞏網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供岑鞏營(yíng)銷型網(wǎng)站建設(shè),岑鞏網(wǎng)站制作、岑鞏網(wǎng)頁(yè)設(shè)計(jì)、岑鞏網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造岑鞏網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供岑鞏網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

首先,先創(chuàng)建一個(gè)名稱為 binary_search 的函數(shù):傳遞兩個(gè)參數(shù),元素列表和要查找的值。

def binary_search(_list, value):

接下來(lái),在函數(shù)內(nèi)部定義所需的變量,二分法的關(guān)鍵在于從列表的中間向兩側(cè)查找(表述可能不嚴(yán)謹(jǐn),大概這個(gè)意思),所以為了直觀起見,定義 left,right, mid 三個(gè)變量,分別代表:列表的起始索引,結(jié)束索引和中間索引。

    left = 0   # 列表的起始索引
    right = len(_list)   # 列表的結(jié)束索引
    mid = int((left + right)/2)  # 采用此方法,通過(guò)四舍五入剛好可以定位到列表的中間位置

接下來(lái)是實(shí)現(xiàn)二分查找的關(guān)鍵部分,先定義一個(gè)while循環(huán),使得查找可以順利進(jìn)行,while函數(shù)內(nèi)嵌套 if 分支語(yǔ)句實(shí)現(xiàn)條件判斷,共有三種情況:

1. _list[mid] == value: 中間值恰好是我們需要查找的值,那么直接返回對(duì)應(yīng)的索引就可以了。

2. _list[mid] > value: 要查找的值在mid的左側(cè),更新right 的值為mid,縮小查找范圍。

3._list[mid] < value:要查找的值在mid的右側(cè),更新left 的值為mid,到 mid 右側(cè)進(jìn)行查找。

最后,對(duì)mid的值做一下更新,以便開始下一輪查找,同時(shí)采用 while-else語(yǔ)句針對(duì)沒(méi)有查找到的情況進(jìn)行判斷,并給定一個(gè)返回值。

    while left < right:
        if _list[mid] == value:
            return mid
        elif _list[mid] > value:
            right = mid
        else:
            left = mid
        mid = int((right + left)/2)
    else:
        return -1

最后,完整代碼,以及測(cè)試運(yùn)行表現(xiàn)如下:

""" a demo realize binary search"""
 
 
def binary_search(_list, value):
    left = 0   # 列表的起始索引
    right = len(_list)   # 列表的結(jié)束索引
    mid = int((left + right)/2)  # 采用此方法,通過(guò)四舍五入剛好可以定位到列表的中間位置
    while left < right:
        if _list[mid] == value:
            return mid
        elif _list[mid] > value:
            right = mid
        else:
            left = mid
        mid = int((right + left)/2)
    else:
        return -1
 
 
index = "the index of value in the list: {}"
print(index.format(binary_search([1, 2, 3, 4, 5, 6, 7, 8, 9], 1)))

運(yùn)行結(jié)果:

如何使用Python實(shí)現(xiàn)二分法查找

沒(méi)有要查找的值的情況:

如何使用Python實(shí)現(xiàn)二分法查找

到此,關(guān)于“如何使用Python實(shí)現(xiàn)二分法查找”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


本文題目:如何使用Python實(shí)現(xiàn)二分法查找
鏈接分享:http://weahome.cn/article/giehji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部