二分法
前提:有序,且从小到大有序
结束条件 当leftIndex>rightIndex时结束
代码示例:
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
var arr=[1,2,3,4,10,15,20,30];
function binarySearch(arr,num)
{
var leftIndex=0;
var rightIndex=arr.length-1;
while(leftIndex<=rightIndex)
{
var midIndex=Math.floor((leftIndex+rightIndex)/2);
if(num>arr[midIndex])
{
leftIndex=midIndex+1;
}else if(num<arr[midIndex]){
rightIndex=midIndex-1;
}else{
return midIndex;
}
}
return -1;
}
console.log(binarySearch(arr,20));
</script>
</body>
</html>