数据结构与算法 --- js二分算法


var arr = [-34, 1, 3, 4, 5, 8, 34, 45, 65, 87];

//递归方式
function binarySearch(data,dest,start,end   ){
    var end=end || data.length-1;
    var start=start || 0;
    m=Math.floor((end+start)/2);
    if(data[m]==dest){
        return m;
    }
    if(dest<data[m]){
        return binarySearch(data,dest,0,m-1);

    }else{
        return binarySearch(data,dest,m+1,end);
    }
    return false;
}
var result=binarySearch(arr,4);
console.log(result);

//非递归方式
function binarySearch2(data,dest){
    var h = data.length - 1,
        j = 0;
    while (j <= h){
        var m=Math.floor((h+j)/2);
        if(data[m]==dest){
            return m;
        }
        if(dest>data[m]){
            j=m+1;
        }else{
            h=m-1;
        }
    }
    return false;
}
console.log(binarySearch2(arr,8));
posted @ 2017-10-09 17:52  技术-刘腾飞  阅读(138)  评论(0编辑  收藏  举报