二分查詢的實現

2021-07-16 12:55:30 字數 777 閱讀 3453

一、二分查詢演算法的實現原理:

二分查詢可以解決已經排好序陣列的查詢問題:只要陣列中包含target(即要查詢的值),那麼通過不斷縮小包含target陣列的範圍,最終就可以找到它。

其演算法流程如下:

對於包含n個元素的表,整個查詢過程大約要經過log(2)n次比較。

二、二分查詢演算法的應用:

二分查詢在資料庫核心實現中非常重要,在資料庫的核心實現中,二分查詢是乙個非常重要的邏輯,

幾乎99%以上的sql語句(所有索引上的範圍掃瞄/等值查詢/unique查詢等),都會使用到二分查詢進行資料的定位。

三、二分查詢**實現:

#includeusing namespace std;

//高效的二分查詢演算法

templateint binarysearch(type *arr, int n, type target, int flag)

} return -1;

}int main()

; int arr = ;

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

int target = 45;

//根據flag來判斷返回第乙個,還是最後乙個,還是直接返回;

//flag = 0:直接返回;flag = 1:返回第乙個;flag=2返回最後乙個

int flag = 0;

int index = binarysearch(arr, n, target, flag);

if(index != -1)

cout<

二分查詢的實現

具體 如下 public static int rank int value,int a value為需要的值,a為目標陣列,lo為開始查詢的位置,hi為結束查詢位置 檢視陣列a下標為lo到hi的資料中是否包含value public static int rank int value,int a,...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

c 實現二分查詢

二分查詢又稱折半查詢,對排好序的陣列,每次取這個數和陣列中間的數進行比較,複雜度是 o logn 如 設陣列為 a n 查詢的數x,如果x a n 2 則返回 n 2 如果 x a n 2 則在 a 0 到a n 2 1 中進行查詢 如果x a n 2 則在a n 2 1 到a n 1 中進行查詢 ...