C語言之折半查詢簡單應用

2021-09-02 18:54:27 字數 861 閱讀 4582

題目:寫**可以在整型有序陣列中查詢想要的數字,

找到了返回下標,找不到返回-1.(折半查詢)

//寫**可以在整型有序陣列中查詢想要的數字,找到了返回下標,找不到返回-1.(折半查詢)

#include#includeint search(int arr, int size, int key)

/*二分查詢*/

int left = 0;

int right = size - 1;

while (left <= right)

else if (arr[mid] < key)

else

} //如果到了這裡表示沒有找到

return -1;

}int main() ;

int size = sizeof(arr) / sizeof(arr[0]);

int key = 67;

int ret = search(arr, size, key);

printf("陣列下標是 :%d\n", ret);

system("pause");

return 0;

}

折半查詢法是效率較高的一種查詢方法。假設有已經按照從小到大的順序排列好的五個整數a0~a4,要查詢的數是x,其基本思想是:設查詢資料的範圍下限為l=1,上限為h=5,求中點m=(l+h)/2,用x與中點元素am比較,若x等於am,即找到,停止查詢;否則,若x大於am,替換下限l=m+1,到下半段繼續查詢;若x小於am,換上限h=m-1,到上半段繼續查詢;如此重複前面的過程直到找到或者l>h為止。如果l>h,說明沒有此數,列印找不到資訊,程式結束。折半查詢是比較容易理解也是一種常用的查詢演算法,希望對大家有一定的幫助!

折半查詢(C語言)

如果所有數字按照某種順序排列好就可以每次用中間位置的數字和要查詢的數字做對比,這樣一次可以排除一半的數字。不斷重複這個過程就可以很快找到目標數字的位置。折半查詢 include int half search const int p start,constint p end,int num else...

折半查詢(C語言)

題目 有15個資料由小到大順序存放在乙個陣列中,輸入乙個數,要求使用折半查詢法查詢該數是陣列中的第幾個元素 如果該數不存在,則輸出,沒有此數 有15個資料由小到大順序存放在乙個陣列中,輸入乙個數,要求使用折半查詢法查詢該數是陣列中的第幾個元素 如果該數不存在,則輸出,沒有此數 include def...

c語言折半查詢

折半查詢又稱為二分查詢,它的前提是線性表中的記錄必須是有序的 通常從小到大有序 線性表必須採用順序儲存 折半查詢的基本思想是 在有序表中,取中間記錄作為比較物件,若給定值與中間記錄的關鍵字相等,則查詢成功 若給定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續查詢 若給定值大於中間記錄的關鍵字,則在...