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

使用Python實現(xiàn)二分法查找的示例

 更新時間:2023年04月24日 10:57:23   作者:WindMoon。  
這篇文章主要介紹了使用Python實現(xiàn)二分法查找的示例,二分法通常又叫二分查找,一般用于查找一個有序數(shù)組中的某個值的位置或者給定的特定值的插入位置,需要的朋友可以參考下

關(guān)于二分法的定義我就不說了,CSDN很多大牛和前輩都已經(jīng)闡述的很清楚了,直接上代碼。

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

def binary_search(_list, value):

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

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

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

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

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

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

最后,對mid的值做一下更新,以便開始下一輪查找,同時采用 while-else語句針對沒有查找到的情況進行判斷,并給定一個返回值。

    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

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

""" a demo realize binary search"""
 
 
def binary_search(_list, value):
    left = 0   # 列表的起始索引
    right = len(_list)   # 列表的結(jié)束索引
    mid = int((left + right)/2)  # 采用此方法,通過四舍五入剛好可以定位到列表的中間位置
    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)))

運行結(jié)果:

 沒有要查找的值的情況:

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

相關(guān)文章

  • Python中unittest用法實例

    Python中unittest用法實例

    這篇文章主要介紹了Python中unittest用法,較為詳細的講述了unittest中相關(guān)函數(shù)的用法及完整實例,需要的朋友可以參考下
    2014-09-09
  • Python OpenCV利用筆記本攝像頭實現(xiàn)人臉檢測

    Python OpenCV利用筆記本攝像頭實現(xiàn)人臉檢測

    這篇文章主要為大家詳細介紹了Python OpenCV利用筆記本攝像頭實現(xiàn)人臉檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • PyMongo 查詢數(shù)據(jù)的實現(xiàn)

    PyMongo 查詢數(shù)據(jù)的實現(xiàn)

    本文主要介紹了PyMongo 查詢數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 對python:print打印時加u的含義詳解

    對python:print打印時加u的含義詳解

    今天小編就為大家分享一篇對python:print打印時加u的含義詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python進行圖片信息提取并重命名

    Python進行圖片信息提取并重命名

    Tesseract-OCR是一款優(yōu)秀的開源OCR軟件,本文主要介紹了如何使用Tesseract-OCR工具識別圖片并提取信息,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • centos 安裝Python3 及對應(yīng)的pip教程詳解

    centos 安裝Python3 及對應(yīng)的pip教程詳解

    這篇文章主要介紹了centos 安裝Python3 及對應(yīng)的pip的教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Python批量刪除或移動指定圖像的實現(xiàn)示例

    Python批量刪除或移動指定圖像的實現(xiàn)示例

    本文主要介紹了Python批量刪除或移動指定圖像,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python中OrderedDict的使用方法詳解

    python中OrderedDict的使用方法詳解

    本篇文章主要介紹了python中OrderedDict的使用方法詳解,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • Python?asyncio的一個坑

    Python?asyncio的一個坑

    這篇文章主要介紹了Python?asyncio的一個坑,文章從Python編程錯誤開始介紹,改變與好多變不成中常犯的錯誤,我們今天就來分析分析吧,需要的下伙伴也可以參考一下
    2021-12-12
  • Python通過跳板機訪問數(shù)據(jù)庫的方法

    Python通過跳板機訪問數(shù)據(jù)庫的方法

    跳板機是一類可作為跳板批量操作的遠程設(shè)備的網(wǎng)絡(luò)設(shè)備,是系統(tǒng)管理員和運維人員常用的操作平臺之一。本文給大家介紹Python通過跳板機訪問數(shù)據(jù)庫的方法,感興趣的朋友跟隨小編一起看看吧
    2021-10-10

最新評論

西贡区| 华阴市| 烟台市| 祥云县| 墨玉县| 兴业县| 红原县| 滁州市| 南宫市| 绥江县| 宁波市| 凤山县| 霍州市| 衡阳县| 平山县| 鹿邑县| 泾阳县| 苏尼特右旗| 克拉玛依市| 普兰店市| 太白县| 安达市| 胶南市| 河池市| 湘阴县| 大悟县| 来宾市| 青州市| 班戈县| 广元市| 汕头市| 上高县| 苏尼特左旗| 陈巴尔虎旗| 天台县| 元江| 尼玛县| 威海市| 手机| 兴义市| 江西省|