寫**可以在整型有序陣列中查詢想要的數字, 找到了返回下標,找不到返回-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 任意輸入乙個數字,用折半查詢法找到其位於陣列中的...