python二分法查找實例代碼
對于要搜索的元素越多,二分查找速度比簡單查找快的更多 這是二分查找算法的優(yōu)點,但二分算法也有缺點,二分算法只針對有序的列表,這樣插入和刪除就會很困難,因此,折半查找方法只適合不經(jīng)常變動的有序列表
?二分查找有個很重要的特點,就是不會查找數(shù)列的全部元素,而查找的數(shù)據(jù)量其實正好符合元素的對數(shù),正常情況下每次查找的元素都在一半一半地減少。所以二分查找的時間復(fù)雜度為 O(log2n) 是毫無疑問的。當(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django 查詢數(shù)據(jù)庫返回JSON的實現(xiàn)
和前端交互全部使用JSON,如何將數(shù)據(jù)庫查詢結(jié)果轉(zhuǎn)換成JSON格式,本文就來介紹一下,感興趣的小伙伴們可以參考一下2021-08-08
Python使用protobuf序列化和反序列化的實現(xiàn)
protobuf是一種二進制的序列化格式,相對于json來說體積更小,傳輸更快,本文主要介紹了Python使用protobuf序列化和反序列化的實現(xiàn),感興趣的可以了解一下2021-05-05
python實現(xiàn)excel和csv中的vlookup函數(shù)示例代碼
這篇文章主要介紹了python實現(xiàn)excel和csv中的vlookup函數(shù),介紹如何使用python在excel和csv里實現(xiàn)vlookup函數(shù)的功能,首先需要簡單了解一下python如何操作excel,需要的朋友可以參考下2023-01-01

