数据结构与算法的JavaScript描述——检索算法

数据结构与算法的JavaScript描述——检索算法

说明:以下部分均为《数据结构与算法的JavaScript描述》学习内容及笔记。

1、使用自组织数据

知识点:对于未排序的数据集来说,当被查找的数据位于数据集的起始位置时,查找是最快,最成功的。
通过将频繁查找的元素置于数据集的起始位置,来最小化查找次数。
2-8原则:帕累托分布)指对某一数据执行的80%的查找操作都是对其中20%的数据元素进行查找。自组织的方式最终会把这20%的数据置于数据集的起始位置,这样便可以通过一个简单的顺序快速查找到它们。

function seqSearch(arr, data){
    for(var i=0;i<arr.length;i++){
        //判断是否在前20%;
        if(arr[i]==data&&i>(arr.length*0.2)){
            swap(arr,i,0);
            return true;
        }else if(arr[i]==data){
            return true;
        }
    }
    return false;
}

2、二分法查找算法

function binSearch(arr,data){
    var upperBound=arr.length-1;
    var lowerBound=0;
    while(lowerBound<=upperBound){
        //每次都在可能的区域取随机值;
        var mid=Math.floor((upperBound+lowerBound)/2);
        if(arr[mid]<data){
            lowerBound=mid+1;
        }else if(arr[mid]>data){
            upperBound=mid-1;
        }else{
            return mid;
        }
    }
    return -1;
}

猜你喜欢

转载自blog.csdn.net/liyuxing6639801/article/details/79839963