本文主要和大家分享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)
主要借鉴了这篇文章 点击打开 里面还有一些二分算法的变形, 感兴趣的同学可以去看看 写的很棒。
相关推荐:
Atas ialah kandungan terperinci js二分查找递归和while写法代码分享. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!