Javascript 二进制搜索的替代解决方案同样好吗?
对于二进制搜索问题,我提出了以下解决方案:Javascript 二进制搜索的替代解决方案同样好吗?,javascript,algorithm,search,binary-search,Javascript,Algorithm,Search,Binary Search,对于二进制搜索问题,我提出了以下解决方案: function binarySearch(arr,numba){ var left = 0 var right = arr.length - 1 while (left <= right){ let middle = Math.floor((left+right)/2) if (arr[middle] < numba){ left ++;
function binarySearch(arr,numba){
var left = 0
var right = arr.length - 1
while (left <= right){
let middle = Math.floor((left+right)/2)
if (arr[middle] < numba){
left ++;
}
else if (numba < arr[middle]){
right -- ;
}
else if (numba === arr[middle]){
return middle
}
}
return -1
}
函数二进制搜索(arr,numba){
左变量=0
右侧变量=arr.length-1
而(左是的,第二个解决方案更好。它是唯一一个实际执行二进制搜索的解决方案(计算复杂度为O(logn)
)。请参阅下面的代码片段,了解需要使用建议的解决方案重新计算中间部分的次数:
function binarySearch(arr,numba){
var left = 0
var right = arr.length - 1
while (left <= right){
let middle = Math.floor((left+right)/2)
if (arr[middle] < numba){
left ++;
}
else if (numba < arr[middle]){
right -- ;
}
else if (numba === arr[middle]){
return middle
}
}
return -1
}
函数二进制搜索(arr,elem){
var start=0;
var end=阵列长度-1;
var middle=数学楼层((起点+终点)/2);
设iterCount=0;
while(arr[中间]!==元素和开始i);
binarySearc(arr,30);
在我看来基本上是一样的,尽管你的代码看起来更简洁、更容易推理,重复的代码更少。有些人喜欢“单返回语句”事情和需要打破循环并执行双重条件,以满足他们总是不惜一切代价只拥有一个返回语句的渴望。在代码中打印左
和右
值,在另一个代码中打印开始
和结束
,区别应该很明显:您的代码不是二进制搜索.