python3 二分查詢

2022-06-13 04:09:09 字數 1042 閱讀 9221

請實現有重複數字的有序陣列的二分查詢。

輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。

示例1

5,4,[1,2,4,4,5]

3

#

#二分查詢

#@param n int整型 陣列長度

#@param v int整型 查詢值

#@param a int整型一維陣列 有序陣列

#@return int整型

#class

solution:

defupper_bound_(self , n , v , a ):

#write code here

#二分查詢就是從中間開始找的,指定數字範圍的兩個邊界值相加整除2

#有重複數字的有序陣列的二分查詢

#輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。

#列表內最後一位數小於指定時:a[n-1]if(a[n-1]return n+1lo=0 #

列表左邊位置,從0開始

right=n#

列表右邊位置,從n開始

while(lo#

當左邊位置《右邊位置時,迴圈以下

mid=(right+lo)//2 #

中間位置,「/」浮點數除,「//」整

if(a[mid]#

當中間位置《指定位置,因為是有序陣列,所以正確數值一定不在左邊了

lo=mid+1 #

左邊位置序號=中間位置+1,左邊開始縮圈了。

else: #

如果是中間位置》=指定位置,那麼正確數值就一定在左邊,右邊縮圈。

right=mid #

當迴圈結束,左邊位置=右邊位置=中間位置,沒法縮了,天命。

return lo+1 #

列表裡是從0開始,但是位置計數是從1開始,所以lo+1

二分查詢(Python3)

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

Python3二分查詢

給定乙個排序的整數陣列 公升序 和乙個要查詢的整數target,用o logn 的時間查詢到target第一次出現的下標 從0開始 如果target不存在於陣列中,返回 1。樣例樣例 1 輸入 1,4,4,5,7,7,8,9,9,10 1 輸出 0 樣例解釋 第一次出現在第0個位置。樣例 2 輸入 ...

二分查詢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 查詢的終止遞...