BinarySearch二分法查詢

2021-07-29 12:00:55 字數 686 閱讀 4739

二分法查詢思路比較簡單,對於乙個有序且無重複的序列,使用二分法查詢的時間複雜度為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 位運...