• 【js】多维排序


        var list = [];
            for(var i=0;i<100;i++){
                list.push({x:parseInt(Math.random()*5),y:parseInt(Math.random()*5),z:parseInt(Math.random()*5)})
            }
           
            console.info(list)
            mdSort(list,["x","y","z"])
            console.info(list)
            /*
                list 待排序集合,例如  [{x:1,y:2,z:3},{...}]  
                plist 排序的属性名,例如  ["x","y","z"]   
            */
            function mdSort(list,plist){
                if(list==null||list.length==0||plist==null||plist.length==0){
                    return;
                }
                sort(list,0,list.length-1,plist[0]);
                for(var i=1;i<plist.length;i++){
                    sort2(list,plist[i-1],plist[i])
                }
                function sort2(list,p1,p2){
                    var start=0;
                    for(var i=1;i<list.length;i++){
                        if(list[i][p1]!=list[i-1][p1]){
                            sort(list,start,i-1,p2)
                            start = i;
                        }
                        if(i==list.length-1){
                            sort(list,start,i,p2);
                        }
                    }
                }
                function sort(list,start,end,p){
                    if(end-start<1){
                        return;
                    }
                    var L=start;
                    var R=end;
                    var temp=list[start];
                    while(L!=R){
                        while(R>L){
                            if(list[R][p]<temp[p]){
                                list[L]=list[R]
                                break;
                            }
                            R--;
                        }
                        while(L<R){
                            if(list[L][p]>temp[p]){
                                list[R]=list[L]
                                break;
                            }
                            L++;
                        }
                    }
                    list[R]=temp;
                    sort(list,start,R-1,p);
                    sort(list,R+1,end,p);
                }
            }
  • 相关阅读:
    mysql为什么使用b+树 不使用b树 或 红黑树
    面试篇 CSS
    练习 : Flink 批流一体
    BiliNote使用教程
    (转) DNS各地延迟排行榜(主)
    练习 :Flink 字频统计
    JSON常用方法
    练习 : 自定义sink mysql hbase
    maxWell
    练习:flink table
  • 原文地址:https://www.cnblogs.com/LightChan/p/7955244.html
Copyright © 2020-2023  润新知