feat(Go-Tool):2021/2/5: 新增二分查找区间内数值方法
This commit is contained in:
@@ -26,3 +26,27 @@ func BinarySearch(list []int, value int) int {
|
||||
|
||||
return -1
|
||||
}
|
||||
|
||||
//二分查找在两个数值之间的数据
|
||||
func BinarySearchBetween(list []int, value int) int {
|
||||
low := 0
|
||||
high := len(list) - 1
|
||||
var mid int
|
||||
|
||||
for low <= high {
|
||||
//求mid
|
||||
mid = (low + high) >> 1
|
||||
//要算后面一个元素,所以下标要判断是否超过 并且需要考虑超过数组最大值的情况
|
||||
if (mid+1 < len(list) && value > list[mid] && value < list[mid+1]) || value == list[mid] || (mid+1 >= len(list) && value > list[mid]) {
|
||||
return mid
|
||||
}
|
||||
//位移
|
||||
if value < list[mid] {
|
||||
high = mid - 1
|
||||
} else {
|
||||
low = mid + 1
|
||||
}
|
||||
}
|
||||
//未找到元素
|
||||
return -1
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user