JavaScript 二分查找

来源:互联网 发布:图灵出版社 java 编辑:程序博客网 时间:2024/06/09 22:54
用JavaScript写二分查找:
        二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。

        二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。

var Arr=[3,5,6,7,9,12,15];function binary(find,arr,low,high){    if(low <= high){        if(arr[low] == find)            return low;        if(arr[high] == find)            return high;        var mid=Math.ceil((high+low)/2);        if(arr[mid] == find){            return mid;        }else if(arr[mid] > find){            return binary(find,arr,low,mid-1);        }else{            return binary(find,arr,mid+1,high);        }    }    return -1;}var index = binary(6,Arr,0,Arr.length-1);

注:将小数值舍入为整数的几个方法:Math.ceil()、Math.floor()和Math.round()。 这三个方法分别遵循下列舍入规则:◎Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;◎Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;◎Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则)。部分内容摘自百度百科