01 Binary Search二分查詢

2022-08-23 12:15:08 字數 1812 閱讀 4008

作用:二分查詢適用於有序的的陣列或列表中,如果列表及陣列中有n個元素,通過二分查詢查詢某一元素的位置需要的步驟是log2(n)(注:該log的底數是2)

def

binary_search(list,item):

low =0

high = len(list)-1 #

python陣列id從0開始,與matlab不同、

t =0

while low <=high:

t = t + 1;

mid = round((low + high)/2)

guess =list[mid]

if guess ==item:

return

(mid,t)

if guess >item:

high = mid-1

else

: low = mid + 1

return none #

python關鍵字none,相當於matlab的nan

my_list = range(1,101)

value = binary_search(my_list,1)

print ("

search num:

",value[1],'

index position

',value[0])

執行後結果:

search num: 6 index position 0

注意事項:

函式實現**:

function [count,out] =binary_search(list,item)

%list:所要查詢的陣列一維行向量

%item:查詢的元素

low = 1;

high =length(list);

t = 0;

while low <=high

t = t+1;

mid = round((low+high)/2);

guess = list(1,mid);

if guess ==item

out =mid;

count =t;

break

;

else

if guess >item

high = mid - 1;

if highout = 'none'

;

break

; end

else

low = mid + 1;

if highout = 'none'

;

break

; end

endend

end

測試用**:

n = 100;

data =randperm(n);

data =sort(data);

[t,v] = binary_search(data,100);

str = ['search num:',num2str(t),'; ','index position:'

,num2str(v)];

disp(str);

執行後結果:  

search num:6;   index position:100

注意事項

二分查詢 Binary Search

打算重返c c 陣營,所以準備從演算法開始溫習,今天我們談到的是一種效率較高的查詢方法 二分查詢。什麼是二分查詢 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。二分查詢的基本思想是 1 首先確定該區間的中點位置 ...

二分查詢 BinarySearch

前置條件 乙個有序的序列 假設公升序排列 在序列中查詢指定元素 演算法 首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止。int binarysearch vector ...

二分查詢 BinarySearch

二分查詢又稱為折半查詢 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢...