今天出去筆試,遇到一道題目讓我們用二分法查詢一已排好序的陣列中的資料,並返回該資料的位置,這
是我第一
次碰到使用二分法的程式設計題,一開始還是有點小慌得,畢竟之前沒有寫過,怕有些注意點沒法試卷中
檢測出來,不過二分法的概念還是很好理解的,
主要思想是:(設查詢的陣列區間為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 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...