C 二分查詢

2021-10-01 14:25:17 字數 1025 閱讀 1345

二分查詢,又叫折半查詢,顧名思義,可以通過比較中間位置是否與要查詢的相等。如果相等即找到了目標,否則,看目標落在中間位置左側還是右側,然後再同樣的到對應區間去找。

假設我們有這樣乙個陣列

#define maxsize 10

int array[maxsize]

=;

我們可以標記左下標以及右下標

int left =0;

int right = maxsize -

1;

所謂折半,即下標,要搜尋的位置折半

mid =

(left + right)/2

;

我們需要乙個迴圈來找尋目標整數,此處要確定迴圈結束條件,我們也可以先考慮比較的過程,即確定每乙個分支落在左側,右側,相應的下標需要做什麼(移動到新位置),當然如果此時查詢到我們跳出即可

while

(left <= right)

printf

("not find\n"

);

有同學可能會問,為什麼新的left = mid + 1,新的right = mid + 1,因為當輪迴圈num != ar[mid],新的查詢當然要到剩餘區間去找啊。此時我們可以很容易確定迴圈跳出條件,當left > right時,即左下標越過右下標,其實就已經遍歷完了,目標不在陣列中。

//三個引數,陣列位址,陣列大小,目標整數

intbinary_search

(int ar,

int n,

int num)

else

if(num < ar[mid]

) right = mid -1;

else

left = mid +1;

}return ret;

}

這麼寫當然是沒問題的。其實根據二分查詢的定義,我們也可通過遞迴來實現。

下次回來寫,似乎有點麻煩。。。

c 二分查詢

二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。不妨設有序表是遞增有序的。public class program else return 1 查詢失敗 public static void main string...

二分查詢C

雖然二分查詢思路很簡單,但實現起來需要注意很多細節。如區間是閉合區間還是前開後閉區間,迴圈的退出條件是left right 還是 left right,下一步搜尋是使用mid還是mid 1等。普通二分查詢 遞迴 intbinary search const vector int nums,const...

C二分查詢

include intbinarysearch list l,elementtype x int flag floor high low 2 int c 1 while l data flag x c l last else if l data flag x if c l last else 題目 ...