javascript二分法

//Copyright 2009 Nicholas C. Zakas. All rights reserved.
//MIT-Licensed, see source file
function binarySearch(items, value){
 
    var startIndex  = 0,
        stopIndex   = items.length - 1,
        middle      = Math.floor((stopIndex + startIndex)/2);
 
    while(items[middle] != value && startIndex < stopIndex){
 
        //adjust search area(调整查找范围)
        if (value < items[middle]){
            stopIndex = middle - 1;
        } else if (value > items[middle]){
            startIndex = middle + 1;
        }
 
        //recalculate middle(重新计算中项索引)
        middle = Math.floor((stopIndex + startIndex)/2);
    }
 
    //make sure it's the right value(确保返回正确的值)
    return (items[middle] != value) ? -1 : middle;
}
posted @ 2010-04-23 15:14  郭振斌  阅读(783)  评论(0编辑  收藏  举报