二分法查詢思路比較簡單,對於乙個有序且無重複的序列,使用二分法查詢的時間複雜度為o(lgn),效率很高,下面是二分法查詢的**實現,雖然**很簡單,但是一定要注意細節,做到輕鬆手寫二分查詢也是不錯的嘛。
cpp實現:
#include
#include
using
namespace
std;
int bs(int n,vector
v, int lo, int hi)
return -1;//返回-1表示查無此數。
}int main();
int n, s = v.size();
cout
<< "請輸入要查詢的數:"
<< endl;
cin >> n;
int lo = 0, hi = s - 1;
int a = bs(n, v, lo, hi);
cout
<< "index is "
<< a << endl;
return
0;}
做完之後我想到乙個問題,對於有重複的有序序列應該如何使用二分法來查詢呢?應該是不可以使用二分法查詢的。設想乙個極端的例子,假設乙個長度為10的陣列,陣列的元素全部為1,那麼若待查詢的元素的也為1,那麼在查到相等的時候,lo,hi沒法重新賦值了。 二分法查詢 BinarySearch
前幾天參加2014阿里巴巴春季校招 測試開發崗 筆試,裡面有一道改錯題,就是給了乙個binary search的 結果這麼基礎的一題我還是沒能答全對.悲劇悲劇,這個水平注定去不了阿里.現在開始亡羊補牢.演算法 binarysearch 輸入 陣列a,起始索引begin,結束索引end,所查詢值val...
二分法查詢BinarySearch
二分法查詢 又叫折半查詢,要求待查詢的序列有序。每次取中間位置的值與待查關鍵字比較,如果中間位置 的值比待查關鍵字大,則在前半部分迴圈這個查詢的過程,如果中間位置的值比待查關鍵字小,則在後半部分迴圈這個查詢的過程。直到查詢到了為止,否則序列中沒有待查的關鍵字。public class binarys...
二分法查詢Binary Search
1.二分法查詢演算法,判斷乙個數是否在乙個有序陣列中存在,最快的方法就是二分法,時間複雜度為o logn 2.利用二分思想,每次與中間數值比較,縮小查詢範圍。3.寫好二分查詢需要注意,迴圈條件是low high mid取值最好不用mid low high 2,而是用low high low 1 位運...