二分搜尋模板

2021-10-09 16:21:40 字數 1052 閱讀 4780

int

binary_search

(int

nums,

int target)

else

if(nums[mid]

> target)

else

if(nums[mid]

== target)

}// 直接返回

return-1

;}

搜尋區間是兩端閉區間。

int

left_bound

(int

nums,

int target)

else

if(nums[mid]

> target)

else

if(nums[mid]

== target)

}// 最後要檢查 left 越界的情況

if(left >= nums.length || nums[left]

!= target)

return-1

;return left;

}

為了方便記憶,搜尋區間也是兩端閉區間。

int

right_bound

(int

nums,

int target)

else

if(nums[mid]

> target)

else

if(nums[mid]

== target)

}// 最後要檢查 right 越界的情況

if(right <

0|| nums[right]

!= target)

return-1

;return right;

}

為了方便記憶,搜尋區間也是兩端閉區間。

二分搜尋的關鍵就在於搜尋區間,明確了搜尋區間的定義(到底是兩端閉區間還是左閉右開區間),那麼直接根據邏輯寫**即可。需要注意的細節是:while退出條件、while結束後的檢查操作。

二分搜尋模板

正如bfs dfs有模板,二分搜尋也有模板。模板一 左閉右開 l,r public void bianrysearch int l int r else return l 是g m 成立的最小值 模板二 左閉右閉 l,r public void bianrysearch int l int r el...

二分搜尋的模板(一)

二分搜尋是演算法搜尋一部分的重要內容。雖然變化多端,但仍有跡可循,有法可依。記錄一下在網上遇到的模板 這個模版的核心是將二分搜尋 binary search 問題轉化成 在給定公升序陣列 沒有相同元素 中,尋找大於等於 target 值的最小索引或小於等於 target 值的最大索引。有幾點需要注意...

Java 二分搜尋 二分查詢

對陣列元素進行逐個查詢顯然是費時費力的工作,我們可以使用一些方法快速地搜尋出陣列中元素的指定位置.接下來我們介紹一種方法 二分搜尋法 二分搜尋法充分利用了元素間的次序關係.基本思想 將n元素分成個數大致相同的涼拌,取arr n 2 與欲查詢的x做比較,如果 下面將採用兩種方式 遞迴 非遞迴 來展示二...