CSC300 / CSC402: Using the Card class [7/7] Previous pageContents

file:XSortCards2.java [source]
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package algs21;
import stdlib.*;
import algs12.XCard;
import java.util.Comparator;

public class XSortCards2 {
  public static void show (String title, XCard[] d) {
    StdOut.println (title);
    for (int i=0; i<4; i++) {
      for (int j=0; j<13; j++) {
        StdOut.format ("%3s ", d[i*13+j]);
      }
      StdOut.println ();
    }
    StdOut.println ();
  }
  private static class RankFirstComparator implements Comparator<XCard> {
    public int compare (XCard c1, XCard c2) {
      if (c1.rank.compareTo (c2.rank) < 0) return -1;
      if (c1.rank.compareTo (c2.rank) > 0) return +1;
      if (c1.suit.compareTo (c2.suit) < 0) return -1;
      if (c1.suit.compareTo (c2.suit) > 0) return +1;
      return 0;
    }
  }
  public static void main (String[] args) {
    XCard[] d = XCard.newDeck ();
    show ("Initial", d);
    StdRandom.shuffle (d);
    show ("Shuffled", d);
    Insertion.sort (d);
    show ("Sort1", d);
    Insertion.sort (d, new RankFirstComparator ());
    show ("Sort2", d);
  }
}
Sort1
 2C  3C  4C  5C  6C  7C  8C  9C 10C  JC  QC  KC  AC 
 2D  3D  4D  5D  6D  7D  8D  9D 10D  JD  QD  KD  AD 
 2H  3H  4H  5H  6H  7H  8H  9H 10H  JH  QH  KH  AH 
 2S  3S  4S  5S  6S  7S  8S  9S 10S  JS  QS  KS  AS 

Sort2
 2C  2D  2H  2S  3C  3D  3H  3S  4C  4D  4H  4S  5C 
 5D  5H  5S  6C  6D  6H  6S  7C  7D  7H  7S  8C  8D 
 8H  8S  9C  9D  9H  9S 10C 10D 10H 10S  JC  JD  JH 
 JS  QC  QD  QH  QS  KC  KD  KH  KS  AC  AD  AH  AS 

Previous pageContents