Binary Search 方法題型彙總

2022-06-13 01:39:14 字數 1399 閱讀 2729

作為log(n) search 方法的典型, binary search基本可以分為以下幾類

- search 準確number的

-search 最小differnece的

-search closest的,這個又可以分為略微小於和略微大於的。

search min or max

有重複的

非單項sorted的

下面逐個解說:

1. 準確number, 這個比較簡單,就是可以分為3中情況,mid等於,mid小於,mid大於。不贅述,具體code如下

public

bool binarysearch(int[,] matrix, int row, int target, int left, int

right)

幾個典型的題為

2.3.

first bad version. 

public

int bs(int[,] matrix, int target, int left, int

right)

以找第乙個小於的值為例,幾個要點,首先需要判斷初始值符合不符合。比如最左邊的也大於,那最小值就是最左邊。

search過程中,conditional是left大於right而不是left大於等於right。這個的原因是因為存在left = n, right = n+1的情況,這種情況下mid永遠是n,這就要求我們必須在遞迴的時候必須mid加1或者減1。

比如找[1,4]中的第乙個小於2 的值,

left   mid  right      mid的值小於target,那麼mid+1

0        0      1

1        1      1        這個時候如果判斷條件是left >= right, 則直接輸出為2,顯然是不對的。所以當left == right時候繼續判斷。大於target, 那麼mid-1

1        0      0        left大於right,所以說輸出left。

5. 每次先check左右是否重複,如果有重複的,那就left加1或者right-1,繼續binary search。

find minimum in rotated sorted array ii

public

int firstbadversion(int left, int

right)

6.find minimum in rotated sorted array

public

int findmin(int nums, int left, int

right)

search 2d matrix ii

binary search及相關總結

在程式設計珠璣和程式設計之美上都有討論,這篇部落格總結一下相關知識。最一般的binary search的遞迴和迭代如下 預設非空 include include include using namespace std 下面為遞迴和迭代兩種,思路相同,當有重複數字時,隨機的返回乙個index。int ...

深入學習BinarySearch

這個陣列是排序好的,這時我們就可以使用二分查詢去找這個數,我們可以選擇陣列中間的元素,這個中間元素會把陣列分成前後兩個相等的區間,如果我們要找的元素比中間元素要大,證明這個元素只可能在後半部分區間,我們就只需要去到後半部分區間用類似的方法再次查詢 如果比中間元素要小,則需要去到前半部分區間用類似的方...

二分查詢 Binary Search

打算重返c c 陣營,所以準備從演算法開始溫習,今天我們談到的是一種效率較高的查詢方法 二分查詢。什麼是二分查詢 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。二分查詢的基本思想是 1 首先確定該區間的中點位置 ...