Skip to content

Commit 5bc037b

Browse files
committed
stubs for ch13
1 parent 353123f commit 5bc037b

File tree

1 file changed

+6
-120
lines changed

1 file changed

+6
-120
lines changed

ch13/Deck.java

Lines changed: 6 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66
*/
77
public class Deck {
88

9-
// This is a class variable so we don't have to create
10-
// a new Random object every time we call randomInt.
11-
private static Random random = new Random();
12-
139
private Card[] cards;
1410

1511
/**
@@ -41,65 +37,24 @@ public Card[] getCards() {
4137
}
4238

4339
/**
44-
* Returns a string representation of the deck.
45-
*/
46-
public String toString() {
47-
return Arrays.toString(this.cards);
48-
}
49-
50-
/**
51-
* Swaps the cards at indexes i and j.
40+
* Displays each of the cards in the deck.
5241
*/
53-
public void swapCards(int i, int j) {
54-
Card temp = this.cards[i];
55-
this.cards[i] = this.cards[j];
56-
this.cards[j] = temp;
57-
}
58-
59-
/**
60-
* Chooses a random number between low and high, including both.
61-
*/
62-
public int randomInt(int low, int high) {
63-
int range = high - low + 1;
64-
return low + random.nextInt(range);
42+
public void print() {
43+
for (int i = 0; i < this.cards.length; i++) {
44+
System.out.println(this.cards[i]);
45+
}
6546
}
6647

6748
/**
6849
* Randomly permutes the array of cards.
6950
*/
7051
public void shuffle() {
71-
for (int i = 0; i < this.cards.length - 1; i++) {
72-
int j = this.randomInt(i, this.cards.length - 1);
73-
this.swapCards(i, j);
74-
}
75-
}
76-
77-
/**
78-
* Finds the index of the lowest card
79-
* between low and high inclusive.
80-
*/
81-
public int indexLowest(int low, int high) {
82-
int index = low;
83-
Card minCard = this.cards[low];
84-
for (int i = low + 1; i <= high; i++) {
85-
Card card = this.cards[i];
86-
if (card.compareTo(minCard) < 0) {
87-
index = i;
88-
minCard = card;
89-
}
90-
}
91-
return index;
9252
}
9353

9454
/**
9555
* Sorts the cards (in place) using selection sort.
9656
*/
9757
public void selectionSort() {
98-
int high = this.cards.length - 1;
99-
for (int i = 0; i < this.cards.length; i++) {
100-
int j = this.indexLowest(i, high);
101-
this.swapCards(i, j);
102-
}
10358
}
10459

10560
/**
@@ -113,85 +68,16 @@ public Deck subdeck(int low, int high) {
11368
return sub;
11469
}
11570

116-
/**
117-
* Combines two previously sorted subdecks.
118-
*/
119-
public static Deck merge(Deck d1, Deck d2) {
120-
Card[] c1 = d1.cards;
121-
Card[] c2 = d2.cards;
122-
Deck result = new Deck(c1.length + c2.length);
123-
Card[] c3 = result.cards;
124-
int i = 0; // index in c1
125-
int j = 0; // index in c2
126-
127-
// for each index in the result
128-
for (int k = 0; k < c3.length; k++) {
129-
int choice;
130-
131-
// determine which card to merge next
132-
if (i >= c1.length) {
133-
choice = 2; // c1 is empty
134-
} else if (j >= c2.length) {
135-
choice = 1; // c2 is empty
136-
} else if (c1[i].compareTo(c2[j]) < 0) {
137-
choice = 1; // c1 is lower
138-
} else {
139-
choice = 2; // c2 is lower
140-
}
141-
142-
// store the chosen card in the result
143-
if (choice == 1) {
144-
c3[k] = c1[i];
145-
i++;
146-
} else {
147-
c3[k] = c2[j];
148-
j++;
149-
}
150-
}
151-
return result;
152-
}
153-
15471
/**
15572
* Returns a sorted copy of the deck using merge sort.
15673
*/
15774
public Deck mergeSort() {
158-
159-
// 0 or 1 cards, already sorted
160-
int len = this.cards.length;
161-
if (len < 2) {
162-
return this;
163-
}
164-
165-
// cut the deck about in half
166-
int mid = len / 2;
167-
Deck d1 = this.subdeck(0, mid - 1);
168-
Deck d2 = this.subdeck(mid, len - 1);
169-
170-
// sort each half and merge
171-
d1 = d1.mergeSort();
172-
d2 = d2.mergeSort();
173-
return merge(d1, d2);
75+
return this;
17476
}
17577

17678
/**
17779
* Reorders the cards (in place) using insertion sort.
17880
*/
17981
public void insertionSort() {
180-
for (int i = 1; i < this.cards.length; i++) {
181-
Card card = this.cards[i];
182-
this.insert(card, i);
183-
}
184-
}
185-
186-
/**
187-
* Helper method for insertion sort.
188-
*/
189-
private void insert(Card card, int i) {
190-
int j = i;
191-
while (j > 0 && card.compareTo(this.cards[j - 1]) < 0) {
192-
this.cards[j] = this.cards[j - 1];
193-
j--;
194-
}
195-
this.cards[j] = card;
19682
}
19783
}

0 commit comments

Comments
 (0)