js的查找

来源:互联网 发布:linux解压tar命令 编辑:程序博客网 时间:2024/06/05 06:41


顺序查找
一个一个的比较,如果是则查找到. 
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);

0 0