/** * 折半查找字符在数组中的位置(有序列表) * @param array 被检索的数组 * @param x 要查找的字符 * @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'));