顺序查找
一个一个的比较,如果是则查找到.
var arr=[3,5,90,12,-23];
var findVal=90;
var flag=false;
for(var i=0;i<arr.length;i++)
{ if(arr[i]= = findVal)
{ document.write(”找到了这个数 下标是”+i);
flag=true; }
}
if(!flag)
{ document.write(”一个都没有找到”); }
二分查找
//二分查找[递归]
//二分查找要保证我们的数组是一个有序的.
//思想是
//首先把数组的中间这个数找出,然后和你要查询的数比较
//① 你要查询的数比中间的数大. 则说明我们应当该数组的右边[后边]查询
//② 你要查询的数比中间的数小 .则说明我们应当该数组的左边[前边]查询
//③ 你要查询的数等于中间的数, 说明找到
var arr=[1,90,100,123,4000];
function binarySearch(findVal,arr,leftIndex,rightIndex)
{ //退出条件 if(rightIndex<leftIndex)
{ document.write("查询没有结果");
return; }
//代码:
//找到中间数的下标
var midIndex=Math.round((leftIndex+rightIndex)/2);
if(arr[midIndex]<findVal)
{ binarySearch(findVal,arr,midIndex+1,rightIndex); }
else if(arr[midIndex]>findVal)
{ binarySearch(findVal,arr,leftIndex,midIndex-1); }
else{ document.write("找到 下标是"+midIndex);
//binarySearch(findVal,arr,leftIndex,midIndex-1); }
}
//调用的格式
binarySearch(100,arr,0,arr.length-1);