Python3二分查詢

2021-10-14 13:00:24 字數 1550 閱讀 1032

給定乙個排序的整數陣列(公升序)和乙個要查詢的整數target,用o(logn)的時間查詢到target第一次出現的下標(從0開始),如果target不存在於陣列中,返回-1。

樣例樣例 1:

輸入:[1,4,4,5,7,7,8,9,9,10],1

輸出: 0

樣例解釋: 

第一次出現在第0個位置。

樣例 2:

輸入: [1, 2, 3, 3, 4, 5, 10],3

輸出: 2

樣例解釋: 

第一次出現在第2個位置

樣例 3:

輸入: [1, 2, 3, 3, 4, 5, 10],6

輸出: -1

樣例解釋: 

沒有出現過6, 返回-1

class

solution

:"""

@param nums: the integer array.

@param target: target to find.

@return: the first position of target. position starts from 0.

"""defbinarysearch

(self, nums, target)

:# write your code here

low=

0 high=

len(nums)-1

while low<=high:

mid=

(low+high)//2

if nums[mid]

low=mid+

1else

: high=mid-

1if nums[low]

==target:

return low

if nums[high]

==target:

return high

return

-1

def

binarysearch

(self, nums, target)

:# write your code here

low =

0 high =

len(nums)-1

while low <= high:

mid =

(low + high)//2

if nums[mid]

== target:

return mid

elif target < nums[mid]

: high = mid -

1else

: low = mid +

1return

-1

該問題中要求了如果目標值等於陣列中的重複元素,則返回第乙個元素位置

而原二分查詢問題中並沒有要求返回target第一次出現的下標

二分查詢(Python3)

它接受乙個待查詢的整數值和乙個已經有順序的整數陣列作為引數。如果待查詢的整數值存在於陣列中,則返回它在陣列中的索引,否則提示該數值不在陣列中。print 有序陣列中的二分查詢 key int input 請輸入您要查詢的整數 c 10,11,12,17,19,21,22,24,32,38,49,51...

python3 二分查詢

請實現有重複數字的有序陣列的二分查詢。輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。示例1 5,4,1,2,4,4,5 3 二分查詢 param n int整型 陣列長度 param v int整型 查詢值 param a int整型一維陣列 有序陣列 ret...

二分查詢Python3 實現

coding utf 8 usr bin env python 3.6.3 author vivian time 2018 9 22 是排序後的序列,且支援下標索引的順序表 二分查詢適用物件 有序順序表 def binary search alist,data if len alist 查詢的終止遞...