检索算法——顺序查找(最大值、最小值、自组织数据)

    /* function seqSearch(arr, data) {//等价于:arr.indexOf(data),内置indexOf()方法效率较高
        for ( var i = 0; i < arr.length; ++i) {
            if (arr[i] == data) {
                return i;
            }
        }
        return -1;
    } */
    /* function findMin(arr) {//easy
        var min = arr[0];
        for ( var i = 1; i < arr.length; ++i) {
            if (arr[i] < min) {
                min = arr[i];
            }
        }
        return min;
    }
    function findMax(arr) {//easy
        var max = arr[0];
        for ( var i = 1; i < arr.length; ++i) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    } */
    function swap(arr, index, index1) {
        temp = arr[index];
        arr[index] = arr[index1];
        arr[index1] = temp;
    }
    function seqSearch(arr, data) {
        for ( var i = 0; i < arr.length; ++i) {
            if (arr[i] == data) {
                if (i > 0) {
                    swap(arr, i, i - 1);//1.自组织数据,优化效果
                }
                return true;
            }
        }
        return false;
    }
    var numbers = [ 5, 1, 7, 4, 2, 10, 9, 3, 6, 8 ];
    for ( var i = 1; i <= 3; i++) {
        seqSearch(numbers, 4);
        document.write(numbers + "<br />");
    }
    function seqSearch1(arr, data) {//2.使用自组织数据,优化查找
        for ( var i = 0; i < arr.length; ++i) {
            if (arr[i] == data && i > (arr.length * 0.2)) {
                //使用“ 80-20 原则” 的概率分布——帕累托( Pareto) 分布
                swap(arr, i, 0);
                return true;
            } else if (arr[i] == data) {
                return true;
            }
        }
        return false;
    }
    for ( var i = 1; i <= 3; i++) {
        seqSearch(numbers, 4);
        document.write(numbers + "<br />");
    }

 

posted @ 2016-04-16 18:35  绯乐  阅读(741)  评论(0编辑  收藏  举报