二分查詢(含題集) C 實現

2021-10-05 04:43:46 字數 1709 閱讀 4436

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

#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 與新區間的中間數比較,再根據大小重新縮小一半的區間,直...