查找第一个值等于给定值的元素
function find(arr, value) {
let low = 0
let high = arr.length - 1
while(low <= high){
let mid = low + ((high - low) >> 1) // 取中间的索引
if(arr[mid] > value){
high = mid - 1
}else if(arr[mid] < value){
low = mid + 1
}else{
// 如果当前的索引是0 那肯定当前元素就是第一个了
// 如果当前元素的上一个不等于要查找的值 那当前元素就是第一个
if((mid == 0) || (arr[mid - 1] != value)){
return mid
}else{
high = mid - 1
}
}
}
return -1
}
查找最后一个值等于给定值的元素
function find(arr, value) {
let low = 0
let high = arr.length - 1
while(low <= high){
let mid = low + ((high - low) >> 1)
if(arr[mid] > value){
high = mid - 1
}else if(arr[mid] < value){
low = mid + 1
}else{
// 如果当前索引是最后一个 那肯定就是最后一个了
// 如果当前元素的后一个不是待查找的值 那当前元素就是最后一个
if((mid == arr.length - 1) || (arr[mid + 1] != value)){
return mid
}else{
low = mid + 1
}
}
}
return -1
}
查找第一个大于等于给定值的元素
function find(arr,value){
let low = 0
let high = arr.length - 1
while(low <= high){
let mid = low + ((high - low) >> 1)
if(arr[mid] >= value){
if((mid == 0) || (arr[mid - 1] < value)){
return mid
}else{
high = mid - 1
}
}else{
low = mid + 1
}
}
return -1
}