zoukankan      html  css  js  c++  java
  • 二分线性数组去重

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

      

    //先建立一个数组
        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));

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

  • 相关阅读:
    核函数矩阵为什么要是positive semidefinite的
    Autoencoders
    Statistics与Machine Learning有什么区别
    [zz]Using SyncTeX with LaTeX
    Metric Learning的一个疑惑
    [zz]Latex中texworks编辑器正向反向跳转搜索
    [zz]Python3.x新特性
    LyX 2.0.5中文排版
    function
    多行文字结尾显示省略号
  • 原文地址:https://www.cnblogs.com/Z-Xin/p/7113087.html
Copyright © 2011-2022 走看看