javascript 折半查找字符在数组中的位置(有序列表)

复制代码 代码如下:

  /**

  * 折半查找字符在数组中的位置(有序列表)

  * @param array 被检索的数组

  * @param x 要查找的字符

  * @type int

  * @returns 字符在数组中的位置,没找到返回-1

  */

  function binarySearch(array,x){

  var lowPoint=1;

  var higPoint=array.length;

  var returnValue=-1;

  var midPoint;

  var found=false;

  while ((lowPoint<=higPoint)&&(!found)){

  midPoint=Math.ceil((lowPoint+higPoint)/2);

  //console.log(lowPoint+"===="+midPoint+"===="+higPoint);

  if(x>array[midPoint-1]){

  lowPoint=midPoint+1;

  }

  else if(x<array[midPoint-1]){

  higPoint= midPoint-1;

  }

  else if(x=array[midPoint-1]){

  found=true;

  }

  }

  if(found){

  returnValue=midPoint;

  }

  return returnValue;

  }

  /*var array2=[1,2,3,4,5,6,7,8,9,100,109];*/

  var array2=['a','b','c','d','e','f','g'];

  console.log(binarySearch(array2,'c'));