美文网首页
桶排序的变种--链式基数排序--麻将应用

桶排序的变种--链式基数排序--麻将应用

作者: codezwc | 来源:发表于2018-04-28 21:51 被阅读0次
import org.junit.Test;

import java.util.LinkedList;
import java.util.List;

/**
 * Created by wc on 2018/4/28.
 */

public class 链式基数排序 {

    @Test
    public void test(){
        LinkedList<MaJiang> list=new LinkedList<>();
        list.add(new MaJiang(1,6));
        list.add(new MaJiang(3,2));
        list.add(new MaJiang(2,5));
        list.add(new MaJiang(6,4));
        list.add(new MaJiang(5,7));
        list.add(new MaJiang(4,9));
        list.add(new MaJiang(9,9));
        list.add(new MaJiang(8,8));
        List list1 = sort(list);
        System.out.println(list1.toString());
    }

    /**
     * 桶排序的变种
     */
    public List sort(LinkedList<MaJiang> list){
        //先对点数进行分组
        List listRank=getMergeList(list,9,true);
        List listSuit=getMergeList(list,9,false);

        return listSuit;
    }

    public List getMergeList(LinkedList<MaJiang> list,int n,boolean flag){
        LinkedList[] l=new LinkedList[n];

        for(int i=0;i<l.length;i++){
            l[i]=new LinkedList();
        }
        while(list.size()>0){
            MaJiang maJiang = list.remove();
            if(flag){
                l[maJiang.rank-1].add(maJiang);
            }else{
                l[maJiang.suit-1].add(maJiang);
            }

        }
        for(int i=0;i<l.length; i++){
            list.addAll(l[i]);
        }
        return list;
    }


    public class MaJiang{
        private int suit;
        private int rank;

        public MaJiang(int suit, int rank) {
            this.suit = suit;
            this.rank = rank;
        }

        @Override
        public String toString() {
            return "MaJiang{" +
                    "suit=" + suit +
                    ", rank=" + rank +
                    '}';
        }
    }
}

相关文章

网友评论

      本文标题:桶排序的变种--链式基数排序--麻将应用

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