自主程式設計實現二分法查詢

2021-08-07 20:32:23 字數 1172 閱讀 4449

今天出去筆試,遇到一道題目讓我們用二分法查詢一已排好序的陣列中的資料,並返回該資料的位置,這

是我第一

次碰到使用二分法的程式設計題,一開始還是有點小慌得,畢竟之前沒有寫過,怕有些注意點沒法試卷中

檢測出來,不過二分法的概念還是很好理解的,

主要思想是:(設查詢的陣列區間為a[front, end])

(1)確定該區間的中間位置k

(2)將查詢的值t與a[k]比較。若相等,查詢成功返回此位置;否則確定新的查詢區域,繼續二分查詢。

自己也是沒多會兒便寫好了該程式設計題,但是後來回想起來,發現還是有幾個細節沒處理好:

(1)遞迴時沒有判斷傳入陣列的有效性

(2)沒有考慮查詢的數不在該陣列中的情況

於是自己回來重新編寫了乙個完整並且沒有漏洞的二分法查詢**,如下(分遞迴和不遞迴實現兩種方法):

#include#include #define n 10

//遞迴演算法

int getposi(int *a,int nnum,int front,int end)

if(nnum == a[front])

mid = (front+end)/2 ;

if(mid == front)

if(a[mid] == nnum)

else if(a[mid]nnum)

}

int main()

; int nnum ;

int front,end,mid;

printf("請輸入您想查詢的數字:");

scanf("%d",&nnum) ;

front = 0 ;

end = n-1 ;

//未用遞迴

/*mid = (front+end)/2 ;

while((frontnnum)

else if(a[mid]

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...