Python實現二分查詢法

2021-10-19 02:48:30 字數 1072 閱讀 9967

1、問題需求

輸入列表[1,4,4,5,7,7,8,9,9,10]和目標整數1,輸出其所在的位置為0,即第1次出現在第0個位置。輸入列表[1,2,3,3,4,5,10]和整數目標3,輸出2,即第一次出現2的位置。輸入列表[1,2,3,4,5,10]和目標整數6,輸出-1,即沒有出現過6,返回-1

2、**實現

class

solution

:def

binarysearch

(self, nums, target)

:return self.search(nums,0,

len(nums)-1

, target)

defsearch

(self, nums, start, end, target)

:if start > end:

return-1

mid =

(start + end)//2

if nums[mid]

> target:

return self.search(nums, start, mid, target)

if nums[mid]

== target:

return mid

if nums[mid]

< target:

return self.search(nums, mid, end, target)

if __name__ ==

'__main__'

: my_solution = solution(

) nums =[3

,8,2

,4,1

,5,7

,0] target =

4 targetindex = my_solution.binarysearch(nums, target)

print

(f'輸入:列表,查詢索引所在的位置'

)print

(f'輸出:'

)

好了,需求實現了,啦啦啦!

二分查詢法實現

查詢分為靜態查詢和動態查詢 靜態查詢主要包括順序查詢和二分查詢 折半查詢 順序查詢是我們常用的一種查詢方式,它有順序表的順序查詢和鍊錶的順序查詢,這兩部分在前面學習線性表時都有學習。二分查詢是一種針對有序表進行的查詢,其效率高,比較次數少。動態查詢是指可以對錶進行刪除和插入操作。主要以二叉排序樹為主...

二分查詢法的python實現

1.非遞迴演算法 def binary search lis,nun left 0 right len lis 1 while left right 迴圈條件 mid left right 2 獲取中間位置,數字的索引 序列前提是有序的 if num lis mid 如果查詢數字比中間數字小,那就去...

python實現二分法查詢

搜尋是在乙個專案集合中找到乙個特定專案的演算法過程。搜尋通常的答案是真的或假的,因為該專案是否存在。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經...