首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
#include
#define n 10
intmain()
lower =0;
//右下標
high = n -1;
//左下標
int mid;
//記錄中間下標
while
(lower <= high)
if(x > a[mid]
)//說明x在當前範圍的右邊
if(a[mid]
== x)
//如果找到 輸出下標 直接退出就好了
//保留最後的r和l
else}if
(f(l))
cout << l;
else
cout << r;
return0;
}intf(
int x)
//x就是每小段的和的最大值}if
(t <= m)
return1;
//當前x(和)的段數少於給定的m,也就是x太大了(因為x大了,每一段放的數就多,那麼段數也就少了)
}
待續… c 實現二分查詢
二分查詢又稱折半查詢,對排好序的陣列,每次取這個數和陣列中間的數進行比較,複雜度是 o logn 如 設陣列為 a n 查詢的數x,如果x a n 2 則返回 n 2 如果 x a n 2 則在 a 0 到a n 2 1 中進行查詢 如果x a n 2 則在a n 2 1 到a n 1 中進行查詢 ...
c 實現二分查詢
二分查詢又稱折半查詢,對排好序的陣列,每次取這個數和陣列中間的數進行比較,時間複雜度是o logn 設陣列為a n 查詢的數x,如果x a n 2 則返回n 2 如果x a n 2 則在a 0 到a n 2 1 中進行查詢 如果x a n 2 則在a n 2 1 到a n 1 中進行查詢 優點是比較...
C 實現二分查詢
所謂的二分查詢,在一組遵循一定規律的數中查詢自己想要的數,這裡以一組從小到大排好的陣列為例進行二分查詢,二分思想如下 假設你要找 n 那麼先讓 n 與陣列中間的數比較,縮小一半區間,如果 n 比中間的數大,那麼以後半部分作為新的查詢區間,讓 n 與新區間的中間數比較,再根據大小重新縮小一半的區間,直...