二分查找 也称 折半查找
<script type="text/javascript">
function Binary(array,data){
this.binarySearch=function(){
console.log("Ordered List: "+array);
if (array.length==1) {
if (array[0]==data) {
console.log("Have "+data);
}
}else if(array.length==0){
console.log("No data");
}else{
binary(array,data);
}
}
//主要
var binary=function(){
//* 先设置low high点 和mid
var low=0;
var high=array.length-1;
while(low<=high){
var mid=Math.floor((low+high)/2);
var element=array[mid];
// 如果 data大 那么下次循环找右半圈
if (element<data) {
low=mid+1;
// 如果 data小 那么下次循环找左半圈
}else if(element>data){
high=mid-1;
}
// 找到了数
else{
console.log("array["+mid+"]="+data);
break;
}
}
}
}
var array=[41,10,8,2,0,1,50,15,23,11,
4,9,14,100,40,39,56,34,23,12];
array=array.sort(function(a,b){
return a-b;
});
var binary=new Binary(array,50);
binary.binarySearch();
</script>
Test: