日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中二分查找什么意思_python中二分查找法的实现方法

發布時間:2025/3/12 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中二分查找什么意思_python中二分查找法的实现方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果想要在有序數據中進行查找想要的數據,二分查找法就個好方法,它可以大大縮短了搜索時間,是一種常見的查找方法。二分查找很好寫,卻很難寫對,下面,小編就簡單向大家介紹一下二分查找,并演示器使用代碼。

1、二分查找

在一個有序并且無重復的列表中,對該列表的元素進行查找。

2、特點

(1)必須針對于有序列表

(2)該列表必須無重復

(3)按下標索引查找

3、使用方法

非遞歸實現:

def binary_search(alist, item):

"""二分查找 非遞歸方式"""

n = len(alist)

start = 0

end = n - 1

while start <= end:

mid = (start + end) // 2

if alist[mid] == item:

return True

elif item < alist[mid]:

end = mid - 1

else:

start = mid + 1

return False

if __name__ == '__main__':

li = [17, 20, 26, 31, 44, 54, 55, 77, 93]

# print(binary_search(li, 55))

# print(binary_search(li, 100))

遞歸實現:

def binary_search_2(alist, item):

"""二分查找 遞歸方式"""

n = len(alist)

if 0 == n:

return False

mid = n // 2

if alist[mid] == item:

return True

elif item < alist[mid]:

return binary_search_2(alist[:mid], item)

else:

return binary_search_2(alist[mid + 1:], item)

if __name__ == '__main__':

li = [17, 20, 26, 31, 44, 54, 55, 77, 93]

# print(binary_search(li, 55))

# print(binary_search(li, 100))

基礎知識點擴展:

介紹

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

前提

必須待查找的序列有序

時間復雜度

O(log2n)

原理

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

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

3)區域確定過程:

若array[k]>t,由于數組有序,所以array[k,k+1,……,high]>t;故新的區間為array[low, ..., K-1];

反之,若array[k]

到此這篇關于python中二分查找法的實現方法的文章就介紹到這了,更多相關python中二分查找法如何實現內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

總結

以上是生活随笔為你收集整理的python中二分查找什么意思_python中二分查找法的实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。