請實現有重複數字的有序陣列的二分查詢。
輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。
示例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 查詢的終止遞...