二分查詢變形問題有很多,本章講幾個經典的,預設資料都是從小到大。
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...