二分线性数组去重

  我们在昨天说了二次线性中查找的办法,这回我们再来说一说二次线性数组去重的用法。

  

//先建立一个数组
    var arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 5, 5, 6, 7, 8, 9, 0, 0, 3, 4, 5];
    
    //我们先封装一个函数来进行计算数组去重的计算
    function findInArr(arr,n){
        //数据比对
        for(var i = 0; i < arr.length; i++){
            //不要看到这样写的if语句就认为不好使,其实是可以的
            if(arr[i] == n)return true;
        }
            return false;
    }
    
    //封装一个二分去重的函数
    function removeDup(arr, s, e){
        //还是先判断一下是否出错
        if(s > e){
            return false;
        }else if(s == e){
            //如果数组中只有一个数据时返回一个数就行
            return [arr[s]];
        }
        //计算中间值
        var c = Math.floor((s + e) / 2);
        //将数据分成两个
        var l = removeDup(arr, s, c);
        var r = removeDup(arr, c + 1, e);
        //开始循环对比
        for(var i = 0; i < r.length; i++){
            if(!findInArr(l,r[i])){
                l.push(r[i]);
            }
        }
        //最终返回计算完的数组
        return l;
    }
    //将结果发到控制台
    console.log(removeDup(arr, 0, arr.length - 1));

这样我们就可以进行数组中的去重步骤了,用二次线性是可以对大量数据来进行快速分析的。有兴趣的可以试一试

原文地址:https://www.cnblogs.com/Z-Xin/p/7113087.html