折半查詢
將10到19標號 一共10個數字 所以標號 1-10
折半查詢的數每次為範圍的第乙個(底bot)與最後乙個(頂top)相加除以2 取整
所以第乙個查詢的標號為5 就是查詢14
然後比較
假如要查的為17
將17與14比較 發現17大 則 底 = 當前標號 + 1;
就是6然後 (6 + 10 )/ 2 = 8 就找到是 標號為8 的數字 就是17 第二次就找到了
**如下
#include
void print_num(int *a, int n)
printf("\n");int method(int *a, int len)
else if (find < a[temp -1])
time += 1; //迴圈一次尋找的次數+1
temp = (bot + top) / 2;
while (bot > top) //當底大於頂時結束迴圈
}printf("查詢的次數為:%d\n", time);
if(flag == 1)
int main()
;int len = sizeof(a) / sizeof(a[0]); //判斷陣列內數字的個數
printf("%d\n", len);
method(a, len);
return 0;編譯結果為
二分法查詢(折半查詢)
一 二分法查詢思想 首先從陣列的中間mid開始查詢,如果剛好等於要查詢的值,則返回這個數字的所在位置。如果要查詢的數字比mid值小,則讓mid 1,做為陣列的右邊界,重複 1 操做 如果要查詢的數字比mid大,則讓mid 1做為陣列的左邊界,重複 1 操作。如果left right時,還沒有找到該數...
查詢 二分法查詢 折半查詢法
實現查詢指定數值在元素有序的陣列中儲存的位置 索引 返回該位置 索引 解題步驟 1.定義3個用來記錄索引值的變數,變數min記錄當前範圍最小索引值,初始值為0 變數max記錄當前範圍最大索引值,初始值為陣列長度 1 變數mid記錄當前當前範圍最中間元素的索引值,初始值為 min max 2 2.使用...
折半查詢法 二分法
在有序 設為公升序 表中,取中間元素作為比較物件,若給定值與中間元素的關鍵字相等,則查詢成功 若給定值小於中間元素的關鍵字,則在中間元素的左半區繼續查詢 若給定值大於中間元素的關鍵字,則在中間元素的右半區繼續查詢。不斷重複上述查詢過程,直到查詢成功,或所查詢的區域無該資料元素,查詢失敗。測試資料 1...