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

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

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

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

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

def binary_search(_list, value):

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

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

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

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

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

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

最后,對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)   # 列表的結束索引
    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)))

運行結果:

 沒有要查找的值的情況:

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

相關文章

  • Python中unittest用法實例

    Python中unittest用法實例

    這篇文章主要介紹了Python中unittest用法,較為詳細的講述了unittest中相關函數(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ù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06
  • 對python:print打印時加u的含義詳解

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

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

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

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

    centos 安裝Python3 及對應的pip教程詳解

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

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

    本文主要介紹了Python批量刪除或移動指定圖像,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    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ù)庫的方法

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

最新評論

武义县| 山东| 新昌县| 莱州市| 保德县| 永年县| 阿合奇县| 洞口县| 黄冈市| 德州市| 汝南县| 咸阳市| 抚州市| 新蔡县| 二手房| 雷波县| 永新县| 岳西县| 彭阳县| 安西县| 玉门市| 湘潭县| 抚宁县| 梧州市| 安新县| 重庆市| 蓝山县| 彰化市| 南充市| 汾西县| 卢氏县| 延庆县| 南江县| 松桃| 虞城县| 中超| 竹溪县| 隆林| 绥芬河市| 克拉玛依市| 安徽省|