二分查詢 中 變形問題

2021-10-24 08:20:21 字數 1343 閱讀 9863

二分查詢變形問題有很多,本章講幾個經典的,預設資料都是從小到大。

4種常見的二分查詢變形問題

查詢第乙個值等於給定值元素

查詢最後乙個值等於給定值元素

查詢第乙個大於等於給定值元素

查詢最後乙個小於大於給定值元素

變體1:查詢第乙個值等於給定值元素

如果資料集中存在重複資料,如何找到第乙個值等於給定值的元素

比如這樣乙個有序陣列,arr=[1,2,3,4,5,5,6,7,10,12,13],其中arr[4],arr[5]的值都是5,希望查詢第乙個等於5的資料,也就是下標為4的元素。

示例:

function

binarysearch

($arr

,$target

)elseif(

$arr

[$mid

]<

$target

)else

$high

=$mid-1

;}}return

null

;}

變體2:查詢最後乙個值為給定值的元素

public

function

binarysearch

($arr

,$target

)elseif(

$arr

[$mid

]<

$target

)else

$low

=$mid+1

;}}return

null

;}

變體3:查詢第乙個大於大於給定值定元素

如陣列arr=[3,5,7,9,10],第乙個大於等於6的元素就是7。

function

binarysearch

($arr

,$target

)$high

=$mid-1

;}else

}return

null

;}

變體4:查詢最後乙個小於等於給定值元素

如陣列arr=[1,2,3,6,7,9],最後乙個小於等於7到元素就是6。

function

binarysearch_5

($arr

,$target

)else

$low

=$mid+1

;}}return

null

;}

變形二分查詢

title 資料結構與演算法 專案 主題 二分查詢 description 分析 1 查詢的是乙個有序的資料集合 2 每次查詢都是與區間的中間元素進行對比,將待查詢的區間縮小為之前的一半,直到找到要查詢的元素,或者區間被縮小為0 date 2021 version 0.1版本 author coff...

二分查詢二(二分查詢的經典變形問題)

主要 int bsearch1 int a,int n,int value else if a mid value else return 1 這段 的處理重點就是 a mid value 時的情況,如果 mid 等於 0,即這個元素已經是陣列的第乙個元素,那毫無疑問,這個元素肯定就是我們要找的 如...

二分查詢及其變形

一 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。方法一 o n public int minnumberinrota...