本文主要跟大家分享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)
主要藉鑒了這篇文章點擊打開裡面還有一些二分演算法的變形, 有興趣的同學可以去看看寫的很棒。
相關推薦:
以上是js二分查找遞歸和while寫法程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!