基礎演算法 二分查詢

2022-07-22 02:57:10 字數 734 閱讀 2277

二分查詢

二分查詢原理:從有序列表的候選區data[0:n]開始,通過對待查詢的值與候選區中間值的比較,可以使候選區減少一半。

二分查詢:在乙個陣列內,找到中間值,判斷要找的值和中間值大小的比較。如果中間值大一些,則在中間值的左側區域繼續按照上述方式查詢。如果中間值小一些,則在中間值的右側區域繼續按照上述方式查詢,直到找到我們希望的數字。

def search(lista,val):

#low 和high代表下標 最小下標,最大下標

low=0

high=len(lista)-1

while low <=high:# 只有當low小於high的時候證明中間有數

mid=(low+high)//2

if lista[mid]==val:

return('這個數在陣列中的下標為:%d' % (mid)) #返回他的下標

elif lista[mid]>val:

high=mid-1

else:

low=mid+1

else:

return('沒有找到該值')

# return null證明沒有找到

lista = list(range(100))

val=input('輸入你要查詢的值:')

val=int(val)

print(search(lista,val ))

演算法基礎 二分查詢函式 二分演算法

一 寫乙個函式binaryseach,在包含size個元素的 從小到大排序的int數a裡查詢元素p,如果找到,則返回元素下標,如果找不到,則返回 1。要求複雜度o log n int binarysearch int a,int size,int p return 1 複雜度o log n 二 寫乙...

演算法基礎 二分查詢

二分查詢主要是為了解決 在一堆數中找出指定的數 這類問題。要想二分查詢,這一堆數必須有以下特徵 至於是順序遞增還是遞減,是否存在相同的元素都不要緊。include include using namespace std int binarysearch int array,int low,int h...

二分查詢 基礎演算法

今天有童鞋問到我二分的題,一時間竟然忘了二分怎麼敲了。就特麼你這記性還是別搞acm了 二分的思想 在乙個公升序的序列中查詢乙個元素,普通的想法是直接從頭擼到尾然後判斷,但是當資料很多的時候這中普通的思想絕壁會超時 不過不要小看這種普通的從頭到尾去遍歷的思想,有的時候,它很暴力 二分不同,它是每次去把...