折半查詢法的應用。

2021-09-14 03:58:02 字數 915 閱讀 4979

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

具體思路我寫一下。

1.首先我們我們要查詢乙個陣列元素所對應的下標,我們可以乙個乙個去比對,但是這樣明顯費時費力,這樣我們就引入了折半查詢的方法。

2.如果要進行折半查詢,那我們就要找到乙個陣列的最左邊和最右邊下標,最左邊下標當然是0,那麼最右邊的是什麼?其實就是陣列元素的個數減一。如果不知道陣列元素具體個數,那我們就可以用

int len = sizeof(arr) / sizeof(arr[0])來求得,再減一就是最右邊下標。

3.那麼中間元素對應的下標就是mid=(left+right)/2 然後mid對應的元素與要查詢的值對比,若比要查詢的值大,那麼就將right變為mid-1,這樣查詢的範圍縮小一半,若小於,則將left變為mid+1,依次下去,直到找到為止,這樣大大加快了速度。

下面則是具體實現**。

#include#includeint binarysearch(int arr, int left, int right, int key)

else if (arr[mid] < key)

else

} return -1; //若都沒有,返回-1。

}int main()

; int len = sizeof(arr) / sizeof(arr[0]); //求陣列的長度。

int index = binarysearch(arr, 0, len - 1, 6); //呼叫 binarysearch函式。

printf("%d\n", index);

system("pause");

return 0;

}

折半查詢法

折半查詢法 include include int binsearch int x,int v,int n return 1 int main scanf d x scanf d n x 2 n 7 position binsearch x,v,n 呼叫函式時,不要再引數的型別,陣列v,用v代替就好...

折半查詢法

輸出檔案 輸出檔案 half.in half.out 大魔導師培根曾經說過 讀史使人明智,讀詩使人聰慧,演算使人精密,哲理使人深刻,倫理學使人有修養,邏輯修辭使人善辯。由此可見書籍的重要性是不言而喻的。而與書籍天天打交道的圖書管理員,更是奪天地之造化,吸日月之精華的 神之職業 據史料記載,魔法世界從...

折半查詢法

折半查詢法也稱二分查詢法,是一種快捷有效的查詢關鍵字的方法。在所需查詢資料量較大時,可高效縮短用迴圈遍歷的查詢時間,大大提公升機器效率 但其缺點是所需查詢陣列必須是有序的,下以公升序為例。例 有乙個陣列arr,裡面公升序存放了10個整數,arr 10 任意輸入乙個數字,用折半查詢法找到其位於陣列中的...