python二分法查找實例代碼
對于要搜索的元素越多,二分查找速度比簡單查找快的更多 這是二分查找算法的優(yōu)點,但二分算法也有缺點,二分算法只針對有序的列表,這樣插入和刪除就會很困難,因此,折半查找方法只適合不經(jīng)常變動的有序列表
?二分查找有個很重要的特點,就是不會查找數(shù)列的全部元素,而查找的數(shù)據(jù)量其實正好符合元素的對數(shù),正常情況下每次查找的元素都在一半一半地減少。所以二分查找的時間復雜度為 O(log2n) 是毫無疑問的。當然,最好的情況是只查找一次就能找到,但是在最壞和一般情況下的確要比順序查找好了很多。
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]
總結
到此這篇關于python二分法查找的文章就介紹到這了,更多相關python二分法查找內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于Python實現(xiàn)五子棋-(人機對戰(zhàn))
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)五子棋游戲(人機對戰(zhàn)版),文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-05-05Python實現(xiàn)Word表格轉(zhuǎn)成Excel表格的示例代碼
這篇文章主要介紹了Python實現(xiàn)Word表格轉(zhuǎn)成Excel表格的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04python數(shù)據(jù)結構學習之實現(xiàn)線性表的順序
這篇文章主要為大家詳細介紹了python數(shù)據(jù)結構學習之實現(xiàn)線性表的順序,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09解決python字典對值(值為列表)賦值出現(xiàn)重復的問題
今天小編就為大家分享一篇解決python字典對值(值為列表)賦值出現(xiàn)重復的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python使用Pickle模塊進行數(shù)據(jù)保存和讀取的講解
今天小編就為大家分享一篇關于Python使用Pickle模塊進行數(shù)據(jù)保存和讀取的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04