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

Python真題案例之二分法查找詳解

 更新時(shí)間:2022年03月07日 16:05:21   作者:酷爾。  
這篇文章主要介紹了python實(shí)操案例練習(xí),本文給大家分享的案例中主要講解了二分法查找,需要的小伙伴可以參考一下

寫在前面的話??

學(xué)了Python一些基礎(chǔ)知識(shí)之后,相信大家對(duì)Python使用方法有了一定的感悟,想要追求深層次的東西還要細(xì)細(xì)的學(xué)、慢慢的學(xué)。Python基礎(chǔ)教程更新到今天語(yǔ)法基礎(chǔ)算是完了,本專欄后續(xù)會(huì)對(duì)面向?qū)ο竽K更新。在進(jìn)行面向?qū)ο蟾轮澳貢?huì)有一步小插曲就是Python 百煉成鋼系列。主要的作用呢就是使用Python刷一刷算法題,使自己的基礎(chǔ)更加穩(wěn)固。在更新期間收到了廣大小伙伴的喜愛(ài),博主的知識(shí)水平也有所提升。下面呢咱們進(jìn)入正題講解今天咱們要學(xué)習(xí)的二分查找法。

問(wèn)題描述??

在學(xué)習(xí)一門語(yǔ)言的時(shí)候,咱們做的最多的一件事就是對(duì)數(shù)據(jù)進(jìn)行增刪改查,而對(duì)于增刪改查操作中最常做的就是查,因?yàn)橐粋€(gè)軟件主要的作用就是對(duì)親愛(ài)的用戶進(jìn)行信息展示,只有少部分管理員或者擁有權(quán)限的用戶才可以操作數(shù)據(jù)。比如在鏈表、數(shù)組中查找東西,咱們需要從頭開(kāi)始遍歷,挨個(gè)檢索。數(shù)據(jù)量龐大的時(shí)候會(huì)很令人頭疼。今天介紹的二分法查找(或稱折半查找) 主要是針對(duì)有序數(shù)列(也就是說(shuō)數(shù)據(jù)要先排序)。然后每次取中值進(jìn)行比較,依次折半縮小查找范圍。

原理分析??

1.實(shí)現(xiàn)步驟

  • 1)確定該區(qū)間的中間位置K,在數(shù)組兩邊加上區(qū)間左右邊界l,r
  • 2)將查找的值T與array[k]比較。若相等,查找成功返回此位置;否則確定新的查找區(qū)域,繼續(xù)二分查找。

區(qū)域確定如下:

  • 每一次查找與中間值比較,判斷是否查找成功,不成功當(dāng)前查找區(qū)間將縮小一半。 視情況重新定左右邊界與中間索引k
  • 時(shí)間復(fù)雜度為:O(log2n)。

2.圖解

圖片源于網(wǎng)絡(luò)

參考代碼??

這里在寫代碼的時(shí)候?qū)Ρ攘讼到y(tǒng)內(nèi)置查找關(guān)鍵字in與二分法查找的運(yùn)行效果 打印結(jié)果如下:

酷爾

由此可見(jiàn)Python底層的查找算法還是超級(jí)快的。使用起來(lái)也很方便

二分查找在本次實(shí)驗(yàn)中輸在了需要對(duì)列表進(jìn)行排序上

對(duì)于有序量大的數(shù)據(jù)就可以體現(xiàn)出來(lái)二分查找的優(yōu)勢(shì)了

import time,math,random

#計(jì)時(shí)器(使用的是函數(shù)裝飾器前面說(shuō)函數(shù)的時(shí)候提到過(guò))
def timeT(func):
    def wapper(*s):
        start=time.perf_counter()
        judge=func(*s)
        end=time.perf_counter()
        return judge,start-end
    return wapper
# 使用內(nèi)置查找方法
@timeT
def serch1(lists,e):
    return e in lists

# 二分法
@ timeT
def serch2(lists,e):
    flag=False
    lists=sorted(lists)
    # print(lists)
    # 左游標(biāo)
    lo=0
    # 右游標(biāo)
    ma=len(lists)-1
    # 中間位置
    mid=len(lists)//2
    # 沒(méi)有在列表內(nèi)
    if lists[ma]<e:
        return False
    if lists[lo]>e:
        return False
    # 依次縮小左右游標(biāo),直到lo>ma
    while lo<=ma:
        if lists[mid]>e:
            ma=mid
            mid=(lo+ma)//2
        elif lists[mid]<e:
            lo=mid
            mid=(lo+ma)//2
        else:
        	#標(biāo)記位,True代表查到了
            flag=True
            break
    return flag


def main():
	#生成一個(gè)含有10000個(gè)元素的列表
    numarr=[x for x in range(10000)]
    #打亂列表順序
    random.shuffle(numarr)
    print(*serch1(numarr,23))
    print(*serch2(numarr,223))
    print(223 in numarr)
    # print(numarr)

if __name__=="__main__":
    main()  

到此這篇關(guān)于Python真題案例之二分法查找詳解的文章就介紹到這了,更多相關(guān)Python 二分法查找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用pyqt 實(shí)現(xiàn)重復(fù)打開(kāi)多個(gè)相同界面

    使用pyqt 實(shí)現(xiàn)重復(fù)打開(kāi)多個(gè)相同界面

    今天小編就為大家分享一篇使用pyqt 實(shí)現(xiàn)重復(fù)打開(kāi)多個(gè)相同界面,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python調(diào)用工具包實(shí)現(xiàn)發(fā)送郵件服務(wù)

    Python調(diào)用工具包實(shí)現(xiàn)發(fā)送郵件服務(wù)

    這篇文章主要為大家詳細(xì)介紹了Python圖畫調(diào)用工具包實(shí)現(xiàn)發(fā)送郵件服務(wù)的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05
  • python3 flask實(shí)現(xiàn)文件上傳功能

    python3 flask實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了python3 flask實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • python數(shù)字圖像處理skimage讀取顯示與保存圖片

    python數(shù)字圖像處理skimage讀取顯示與保存圖片

    這篇文章主要為大家介紹了python數(shù)字圖像處理使用skimage讀取顯示與保存圖片示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Python入門篇之正則表達(dá)式

    Python入門篇之正則表達(dá)式

    正則表達(dá)式是一個(gè)很有用的工具,可處理復(fù)雜的字符匹配和替換工作。在Python中內(nèi)置了一個(gè)re模塊以支持正則表達(dá)式。本文我們就來(lái)詳細(xì)探討下Python中正則表達(dá)式。
    2014-10-10
  • python中asyncore異步模塊的實(shí)現(xiàn)

    python中asyncore異步模塊的實(shí)現(xiàn)

    本文主要介紹了python中asyncore異步模塊的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 深入分析python數(shù)據(jù)挖掘 Json結(jié)構(gòu)分析

    深入分析python數(shù)據(jù)挖掘 Json結(jié)構(gòu)分析

    這篇文章通過(guò)實(shí)例給大家分析總結(jié)了python數(shù)據(jù)挖掘以及Json結(jié)構(gòu)分析的相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友參考下。
    2018-04-04
  • python?歸并排序的實(shí)現(xiàn)

    python?歸并排序的實(shí)現(xiàn)

    歸并排序是一種分治算法,它將數(shù)組分成兩半,分別對(duì)這兩半進(jìn)行排序,然后將排序后的兩半合并在一起,本文就來(lái)介紹一下python?歸并排序的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • python統(tǒng)計(jì)字符的個(gè)數(shù)代碼實(shí)例

    python統(tǒng)計(jì)字符的個(gè)數(shù)代碼實(shí)例

    在本篇文章里小編給大家整理了關(guān)于python統(tǒng)計(jì)字符的個(gè)數(shù)代碼實(shí)例內(nèi)容,需要的朋友們可以參考下。
    2020-02-02
  • Python數(shù)據(jù)合并的concat函數(shù)與merge函數(shù)詳解

    Python數(shù)據(jù)合并的concat函數(shù)與merge函數(shù)詳解

    大家都知道concat()函數(shù)可以沿著一條軸將多個(gè)對(duì)象進(jìn)行堆疊,其使用方式類似數(shù)據(jù)庫(kù)中的數(shù)據(jù)表合并,在使用merge()函數(shù)進(jìn)行合并時(shí),默認(rèn)會(huì)使用重疊的列索引做為合并鍵,即取行索引重疊的部分,本文給大家介紹python?數(shù)據(jù)合并concat函數(shù)與merge函數(shù),感興趣的朋友一起看看吧
    2022-05-05

最新評(píng)論

鸡西市| 长兴县| 隆林| 黄山市| 济源市| 青阳县| 桐庐县| 闵行区| 额尔古纳市| 甘肃省| 河池市| 嘉义市| 汪清县| 樟树市| 茌平县| 枝江市| 黔江区| 忻城县| 福建省| 论坛| 南涧| 轮台县| 达日县| 蕉岭县| 五华县| 阿拉善右旗| 新余市| 盘山县| 中江县| 仪征市| 襄汾县| 南乐县| 宽甸| 都匀市| 易门县| 扶绥县| 依兰县| 彭阳县| 娄烦县| 平度市| 普宁市|