算法 1.3.35 RandomQueue

来源:互联网 发布:雷蛇键盘 mac 编辑:程序博客网 时间:2024/06/12 18:07
package Cap1;import edu.princeton.cs.introcs.StdOut;import edu.princeton.cs.introcs.StdRandom;public class RandomQueue<Item> {/** * @param args */private Item[] a = (Item[]) new Object[1];private int N = 0;public boolean isEmpty() { return N == 0; }private void resize(int length){Item[] temp = (Item[]) new Object[length];for(int i=0;i<N;i++){temp[i] = a[i];}a = temp;}public void enqueue(Item item){if(N == a.length) resize(2*a.length);a[N++] = item;}public Item dequeue(){if(isEmpty()) return null;int k = StdRandom.uniform(N);Item item = a[k];a[k] = a[--N];a[N] = null;if(N <= a.length/4) resize(a.length/2);return item;}public Item sample(){if(isEmpty()) return null;int k = StdRandom.uniform(N);return a[k];}public static void main(String[] args) {// TODO Auto-generated method stubRandomQueue<Card> rq = new RandomQueue<Card>();for(int i=0;i<13;i++)for(int j=0;j<4;j++)rq.enqueue(new Card(i,j));String people1="",people2="", people3="", people4="";for(int i=0;i<13;i++){people1 += rq.dequeue().toString() + "\t";people2 += rq.dequeue() + "\t";people3 += rq.dequeue() + "\t";people4 += rq.dequeue() + "\t";}System.out.println(people1);System.out.println(people2);System.out.println(people3);System.out.println(people4);}}class Card{private String suit; //花色private String point; //点数final String[] POINT = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};final String[] SUIT = {"红桃","黑桃","梅花","方块"};public Card(int m, int n){point = POINT[m];suit = SUIT[n];}public String toString(){return suit + point;}}
结果黑桃A红桃8梅花Q方块7梅花10梅花8方块5黑桃4红桃5黑桃10黑桃K方块K方块6梅花7红桃J方块Q梅花K方块9方块10方块J梅花J红桃2黑桃5黑桃7梅花4方块4红桃K红桃9红桃Q黑桃Q红桃7方块A梅花5红桃4黑桃9红桃3红桃6梅花2黑桃J黑桃6黑桃3红桃10梅花9方块8方块2红桃A方块3黑桃2梅花3梅花6梅花A黑桃8


 
原创粉丝点击