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