

本文主要和大家分享js二分查找递归和while写法代码,希望能帮助到大家。
1.递归
主要是控制三个变量 start end mid ,开始 结束 中间,反复就ok了。
const data = [18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]function Recursive(s,data){
let len = data.length
let start = 0
let end = len-1
let mid
return find(start,end,s)}function find(start,end,s){
mid =Math.ceil((end+start)/2)
if (s==data[mid]) { return s
} else if(s>data[mid] && start <= end) {
end = mid-1
return find(start,end,s)
} else if(s<data[mid] && start <= end){
start = mid+1
return find(start,end,s)
} else{ return null
}
}
let v = f(15,data)
console.log("vvvv",v)while循环
const data = [18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]function while_find(s){
let len = data.length
let start = 0
let end = len-1
let mid
while(start <= end){
mid =Math.ceil((end+start)/2)
if (s<data[mid]) {
start = mid+1
} else if(s>data[mid]){ end = mid-1
} else{ return s
}
} return null}
let v= while_find(8)
console.log("vvvv",v)主要借鉴了这篇文章 点击打开 里面还有一些二分算法的变形, 感兴趣的同学可以去看看 写的很棒。
