javascript順序數組簡單實現個二分查找
阿新 • • 發佈:2019-01-09
nbsp 大於 mat 返回 col sea 詳細 == 二分
直接上碼了註釋寫得很詳細:
function bsearch(A,x){ //l:查找範圍左 r:查找範圍右 let l = 0, //查詢範圍左邊界 r = A.length-1, //查找範圍右邊界 guess //中間猜測位置 while(l <= r){ //guess等於l,r中間位置 guess = Math.floor( (l+r)/2 ) //判斷當前位置是否為要查找的值,是則返回下標 if(A[guess] === x) return guess //如果當前位置值大於要查詢的值 右邊界位置減一 else if(A[guess] > x) r = guess -1 //否則左邊界位置加1 else l = guess + 1 } //找不到返回-1 return -1 } const a = [3,5,4,7,12,42,47,66,71,78]; console.log(bsearch(a,12))//4 console.log(bsearch(a,4))//-1 console.log(bsearch(a,66))//7 console.log(bsearch(a,5))//1
javascript順序數組簡單實現個二分查找