python二分法查找實(shí)例代碼
對(duì)于要搜索的元素越多,二分查找速度比簡(jiǎn)單查找快的更多 這是二分查找算法的優(yōu)點(diǎn),但二分算法也有缺點(diǎn),二分算法只針對(duì)有序的列表,這樣插入和刪除就會(huì)很困難,因此,折半查找方法只適合不經(jīng)常變動(dòng)的有序列表
?二分查找有個(gè)很重要的特點(diǎn),就是不會(huì)查找數(shù)列的全部元素,而查找的數(shù)據(jù)量其實(shí)正好符合元素的對(duì)數(shù),正常情況下每次查找的元素都在一半一半地減少。所以二分查找的時(shí)間復(fù)雜度為 O(log2n) 是毫無(wú)疑問(wèn)的。當(dāng)然,最好的情況是只查找一次就能找到,但是在最壞和一般情況下的確要比順序查找好了很多。
class Solution:
def search(self,nums:List[int],target:int)->int:
left=0
right=len(nums)-1
while(left<=right):
mid=(left+right)//2
if nums[mid]==target:
return mid
if nums[mid]<target:
left=mid+1
else:
right=mid-1
return -1
class Solution:
def search(self,nums:List[int],target:int)->int:
left=0
right=len(nums)-1
while(left<=right):
mid=(left+right)//2
if nums[mid]==target:
return mid
if nums[mid]>target:
left=mid+1
else:
right=mid-1
return -1
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
for i in range(len(numbers)-1):
left=i
right=len(numbers) - 1
while(left<=right):
mid=(left+right)//2
if numbers[mid]+numbers[i]==target:
return [i+1,mid+1]
elif numbers[mid]+numbers[i]<target:
left=mid+1
else:
right = mid-1
return [-1,-1]
總結(jié)
到此這篇關(guān)于python二分法查找的文章就介紹到這了,更多相關(guān)python二分法查找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python優(yōu)雅實(shí)現(xiàn)二分查找的示例詳解
- 使用Python實(shí)現(xiàn)二分法查找的示例
- Python實(shí)現(xiàn)二分法查找及優(yōu)化的示例詳解
- Python?二分查找之bisect庫(kù)的使用詳解
- Python算法練習(xí)之二分查找算法的實(shí)現(xiàn)
- 詳解Python查找算法的實(shí)現(xiàn)(線性,二分,分塊,插值)
- Python語(yǔ)言實(shí)現(xiàn)二分法查找
- python二分法查找函數(shù)底值
- python中二分查找法的實(shí)現(xiàn)方法
- python實(shí)現(xiàn)二分查找算法
- python二分查找搜索算法的多種實(shí)現(xiàn)方法
相關(guān)文章
Python類的基本寫(xiě)法與注釋風(fēng)格介紹
這篇文章主要介紹了Python類的基本寫(xiě)法與注釋風(fēng)格,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Django 查詢數(shù)據(jù)庫(kù)返回JSON的實(shí)現(xiàn)
和前端交互全部使用JSON,如何將數(shù)據(jù)庫(kù)查詢結(jié)果轉(zhuǎn)換成JSON格式,本文就來(lái)介紹一下,感興趣的小伙伴們可以參考一下2021-08-08
一文搞懂Python中的進(jìn)程,線程和協(xié)程
并發(fā)編程是實(shí)現(xiàn)多任務(wù)協(xié)同處理,改善系統(tǒng)性能的方式。Python中實(shí)現(xiàn)并發(fā)編程主要依靠進(jìn)程、線程和協(xié)程,本文將通過(guò)示例詳解三者的區(qū)別,感興趣的可以了解一下2022-05-05
Python使用protobuf序列化和反序列化的實(shí)現(xiàn)
protobuf是一種二進(jìn)制的序列化格式,相對(duì)于json來(lái)說(shuō)體積更小,傳輸更快,本文主要介紹了Python使用protobuf序列化和反序列化的實(shí)現(xiàn),感興趣的可以了解一下2021-05-05
python驗(yàn)證多組數(shù)據(jù)之間有無(wú)顯著差異
這篇文章主要介紹了python驗(yàn)證多組數(shù)據(jù)之間有無(wú)顯著差異,利用方差分析和卡方分布驗(yàn)證多組數(shù)據(jù)之間的某些屬性有無(wú)顯著性差異,對(duì)于連續(xù)性屬性可以用方差分析,對(duì)于離散型屬性可以用卡方檢驗(yàn)。下面文章詳細(xì)內(nèi)容需要的小伙伴可以參考一下2022-01-01
python實(shí)現(xiàn)excel和csv中的vlookup函數(shù)示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)excel和csv中的vlookup函數(shù),介紹如何使用python在excel和csv里實(shí)現(xiàn)vlookup函數(shù)的功能,首先需要簡(jiǎn)單了解一下python如何操作excel,需要的朋友可以參考下2023-01-01

