javascript - 在javascript中实现二分查找

标签 javascript binary-search

我正在尝试在 javascript 中实现二分搜索。我不知道我的脚本出了什么问题。每当我单击搜索按钮时,页面就会变得无响应。提前致谢。

var i,print,arr;
	arr = [1,2,3,4,5,6,7,8,9,10];
	print = document.getElementById("showArray");
	for(i = 0; i < arr.length; i++){
	 print.innerHTML += arr[i] + "&nbsp;"; 
	}
	function binarySearch(searchValue){ 
	  var lowerIndex, higherIndex, middleIndex,writeResult;
	  lowerIndex = 0;
	  higherIndex = arr.length;
	  writeResult = document.getElementById("showResult");
	  while(lowerIndex <= higherIndex){
	    middleIndex = (higherIndex + lowerIndex) / 2;
		if(searchValue == arr[middleIndex]){
		  writeResult.innerHTML = "PRESENT";
		  consol.log('Present');
		  break;
		}
		else if(searchValue > arr[middleIndex]){
		  lowerIndex = middleIndex + 1;
		}
		else if(searchValue < arr[middleIndex]){
		  higherIndex = middleIndex - 1;
		}
	  }
	}
<button onclick = "binarySearch(1)">SEARCH</button>
	<p id = "showArray" style = "font-size: 40px; padding:0px;">       </p>
	<p id = "showResult">Result is:</p>

最佳答案

尝试类似的事情

Array.prototype.br_search = function (target)   
{  
  var half = parseInt(this.length / 2);  
  if (target === this[half])   
  {  
    return half;  
  }  
  if (target > this[half])   
  {  
    return half + this.slice(half,this.length).br_search(target);  
  }   
  else  
  {  
    return this.slice(0, half).br_search(target);  
  }  
};  

l= [0,1,2,3,4,5,6];  

console.log(l.br_search(5));

关于javascript - 在javascript中实现二分查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40200791/

相关文章:

c++ - 比有序列表的二进制搜索更快

objective-c - 如何内联编写 Objective-C block ?

javascript - 如何在输入类型日期中将最大日期设置为从今天算起的第 7 天?

javascript - 无法将值分配给 Angular 工厂内的变量?

javascript - 如何在jQuery中获取对象标签的持续时间并在特定时间播放视频?

c++ - 为什么会出现段错误以及如何解决它

javascript - 使用 href ="#About us"在一个网站上导航不适用于较小的设备

javascript - 未捕获的类型错误 : Cannot read property 'addClass' of undefined

c++ - 如果我们有成对 vector ,如何进行下界二分搜索

java - 关于二分查找基础知识的一些疑问