美文网首页
数组快速排序/去重

数组快速排序/去重

作者: Cinderella歌儿 | 来源:发表于2017-03-26 21:16 被阅读0次

    数组排序
    先来几个高级算法:
    从大到小排序:

    var arr=[5,2,9,11,6,7,12];
    arr.sort(function (n1,n2){
        return n2-n1;
    });
    alert(arr);
    

    从小到大排序:

    var arr=[5,2,9,11,6,7,12];
    arr.sort(function (n1,n2){
        return n1-n2;
    });
    alert(arr);
    

    随机排序:

    var arr=[5,2,9,11,6,7,12];
    arr.sort(function (){
        return Math.random()-0.5;
    });
    alert(arr);
    

    手写数组排序:
    方法一:
    1.封装函数,找到iMinIndex;
    2.循环数组,把最小的放前放;

    function findIminIndex(arr,start){
                var iMin=arr[start];
                var iMinIndex=start;
                for(var i=start+1;i<arr.length;i++){
                    if(arr[i]<iMin){
                        iMin=arr[i];
                        iMinIndex=i;
                    }
                }
                return iMinIndex;
            }
            var arr=[34,12,7,5,6,135,99];
            for(var i=0;i<arr.length;i++){
                var n=findIminIndex(arr,i);
                //arr[n] arr[i]
                var temp;
                temp=arr[n];
                arr[n]=arr[i];
                arr[i]=temp;
            }
            alert(arr);
    

    手写数组去重
    方法一:
    1.构建新数组存放;
    2.循环原数组,并将没有重复的push到新数组;

    var arr=[11,22,2,2,3,4,55,5,4,4,3];
            function findInArr(item,arr){
                for(var i=0;i<arr.length;i++){
                    if(arr[i]==item)return true;
                }
                return false;
            }
            var arr2=[];
            for(var i=0;i<arr.length;i++){
                if(!findInArr(arr[i],arr2)){
                    arr2.push(arr[i]);
                }
            }
            //alert(arr2);
            document.write(arr2)
    

    方法二:
    1.根据json的键值不相同原则,将可以作为键值的push到一个新的数组中;

    var arr=[11,22,2,2,3,4,55,5,4,4,3];
            var json={};
            for(var i=0;i<arr.length;i++){
                json[arr[i]]='zzzzzz';
            }
            //console.log(json);
            var arr2=[];
            for(var name in json){
                arr2.push(name);
            }
            //alert(arr2);
            document.write(arr2);
    

    方法三:
    1.原数组排序;
    2.比较原数组相邻位置是否相等;
    3.若相当,splice该数,并注意将i--;

     var arr=[11,22,2,2,3,4,55,5,4,4,3];
            arr.sort();
            //alert(arr);
            for(var i=0;i<arr.length;i++){
                if(arr[i]==arr[i+1]){
                    arr.splice(i,1);
                    i--;
                }
            }
            alert(arr);
    

    相关文章

      网友评论

          本文标题:数组快速排序/去重

          本文链接:https://www.haomeiwen.com/subject/byimvttx.html