欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)二分查找算法

 更新時(shí)間:2020年09月18日 15:46:47   作者:流柯  
這篇文章主要介紹了python如何實(shí)現(xiàn)二分查找算法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下。

介紹

二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須采用順序存儲(chǔ)結(jié)構(gòu),而且表中元素按關(guān)鍵字有序排列。

前提

必須待查找的序列有序

時(shí)間復(fù)雜度

O(log2n)

原理

1)確定該期間的中間位置K

2)將查找的值t與array[k]比較,若相等,查找成功返回此位置;否則確定新的查找區(qū)域,繼續(xù)二分查找。

3)區(qū)域確定過(guò)程:

若array[k]>t,由于數(shù)組有序,所以array[k,k+1,……,high]>t;故新的區(qū)間為array[low, ..., K-1];
反之,若array[k]<t對(duì)應(yīng)查找區(qū)間為array[k+1, ..., high]

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date  : 2020-07-10
# @Author : 流柯
# @desc : 二分查找算法,python版

def serach(array, t):
  array.sort() #排序,保證列表是有序的
  low = 0
  height = len(array) - 1
  while low <= height:
    k = (low + height) // 2
    if array[k] < t:
      low = k + 1
    elif array[k] > t:
      height = k - 1
    else:
      return k #找到后返回位置
  return -1 #找不到返回-1
array = [1, 3, 5, 7, 9, 6, 8, 0]
print(serach(array, 5))

以上就是python實(shí)現(xiàn)二分查找算法的詳細(xì)內(nèi)容,更多關(guān)于python 二分查找算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • PyCharm 解決找不到新打開(kāi)項(xiàng)目的窗口問(wèn)題

    PyCharm 解決找不到新打開(kāi)項(xiàng)目的窗口問(wèn)題

    這篇文章主要介紹了PyCharm 解決找不到新打開(kāi)項(xiàng)目的窗口問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • Python標(biāo)準(zhǔn)異常和異常處理詳解

    Python標(biāo)準(zhǔn)異常和異常處理詳解

    這篇文章主要介紹了Python標(biāo)準(zhǔn)異常和異常處理詳解,本文講解了python標(biāo)準(zhǔn)異常、什么是異常、異常處理的多種方法和實(shí)例等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • 在Django admin中編輯ManyToManyField的實(shí)現(xiàn)方法

    在Django admin中編輯ManyToManyField的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇在Django admin中編輯ManyToManyField的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python中的opencv和PIL(pillow)轉(zhuǎn)化操作

    python中的opencv和PIL(pillow)轉(zhuǎn)化操作

    這篇文章主要介紹了python中的opencv和PIL(pillow)轉(zhuǎn)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • TensorFlow索引與切片的實(shí)現(xiàn)方法

    TensorFlow索引與切片的實(shí)現(xiàn)方法

    這篇文章主要介紹了TensorFlow索引與切片的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python?列表的查詢操作和切片

    python?列表的查詢操作和切片

    這篇文章主要介紹了python?列表的查詢操作和切片,列表是python內(nèi)置的數(shù)據(jù)結(jié)構(gòu),相當(dāng)于數(shù)組,列表中所有數(shù)據(jù)都是按順序有序排列,列表屬于序列類型,接下來(lái)一起學(xué)習(xí)下面的文章內(nèi)容吧
    2022-01-01
  • Python實(shí)現(xiàn)文件操作幫助類的示例代碼

    Python實(shí)現(xiàn)文件操作幫助類的示例代碼

    在使用Python進(jìn)行業(yè)務(wù)開(kāi)發(fā)的時(shí)候,需要將一些數(shù)據(jù)保存到本地文件存儲(chǔ),方便后面進(jìn)行數(shù)據(jù)分析展示,本文就來(lái)用Python制作一個(gè)文件操作幫助類,需要的可以參考一下
    2023-03-03
  • 基于python3.7利用Motor來(lái)異步讀寫(xiě)Mongodb提高效率(推薦)

    基于python3.7利用Motor來(lái)異步讀寫(xiě)Mongodb提高效率(推薦)

    Motor是一個(gè)異步mongodb driver,支持異步讀寫(xiě)mongodb。它通常用在基于Tornado的異步web服務(wù)器中。這篇文章主要介紹了基于python3.7利用Motor來(lái)異步讀寫(xiě)Mongodb提高效率,需要的朋友可以參考下
    2020-04-04
  • Python數(shù)據(jù)持久化shelve模塊用法分析

    Python數(shù)據(jù)持久化shelve模塊用法分析

    這篇文章主要介紹了Python數(shù)據(jù)持久化shelve模塊用法,結(jié)合實(shí)例形式較為詳細(xì)的總結(jié)分析了shelve模塊的功能、原理及簡(jiǎn)單使用方法,需要的朋友可以參考下
    2018-06-06
  • python實(shí)現(xiàn)pdf轉(zhuǎn)換成word/txt純文本文件

    python實(shí)現(xiàn)pdf轉(zhuǎn)換成word/txt純文本文件

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)pdf轉(zhuǎn)換成word和txt純文本文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評(píng)論