Sortieren von einem deck von Karten, die von Anzug und dann Rang
Habe ich diese Java-Klasse:
class Card
{
private Suit suit;
private int rank;
}
(Suit
ist ein enum)
Gibt es in vier Farben, mit den Rängen 1-9 und jede der vier Farben mit einem einzigen möglichen Rang 0. Jede Karte existiert in einer unbekannten, aber Konstanten unter allen Karten, die Anzahl der Kopien. Wie würde ich Sortiere ein deck in einer bestimmten Reihenfolge der Farben, und durch die Erhöhung Rang in jeder Farbe?
- Ach komm! Was sind Hausaufgaben zu tun für Sie, wenn Sie nicht versuchen, Sie zu lösen sich.
- Konstantin: Wenn ich für meine Hausaufgaben hier erleben, ich möchte einfach trennen Sie das deck passt und meine Lieblings-quicksort auf jeden, aber das ist zu ernst für ein Projekt zu verlassen, die auf Akademische Erfahrung.
- Ist jedes Projekt so ernst, dass man zu meiden Akademische Erfahrung? Ist das nicht ein oxymoron?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen Blick auf Durchführung Vergleichbarer auf der enum.
Müssen Sie entweder
compareTo
Funktion, die bestimmt, ob eine weitere Karte sollte vor oder nach diesem in der Sortierreihenfolgedann können Sie Sammlungen.Sortieren auf Ihrer Liste.
Achten Rang ein enum zu und Sie können Angebot ein sortiertes deck als solche:
machen es zu implementieren, die
Comparable
- Schnittstelle. Es gibt nur eine Methode, die Sie schreiben müssen. Dann können Sie miteinander verglichen werden, und Sie haben eine Reihe von bestehenden Sortier-Möglichkeiten, wie zum Beispiel statischeArrays.sort
wenn Sie ein array oderCollections.sort
wenn Ihr jede Art vonCollection
(Liste, Vector, etc)Neben der Umsetzung auf
Card
Sie könnte das gleiche zu tun fürSuit
je nachdem, wie Ihre getan.Hier wäre ein Beispiel die Karte Klasse. Da die Fragen, die Staaten der Anzug würde von einer bestimmten Klasse während der Rang wäre ein integer-Wert (in diesem Beispiel habe ich nicht implementieren Rang Validierung). Die Umsetzung der Vergleichbaren Klasse erlaubt, eine Karte der Klasse zu vergleichen, eine andere Karte Klasse. So, dass eine Liste/Zusammenstellung von Karten, die sortiert werden können.
o.cardRank - this.cardRank
, warum hast du subtrahieren dieser beiden Instanz-Variablen? Ich bin Total verloren.Einen schnellen Weg, um diese Aufgabe wird durch Radix Sort. Legen Sie ein array von Listen von Karte-Werten, dann zu Fuß durch dein deck, platzieren Sie jede Karte in die entsprechende Liste, wie Sie ihm begegnen. Dann verschmelzen alle Listen zusammen in einem teilweise sortiert deck. Jetzt tun die gleiche Sache, nur mit einem array der Listen der Anzüge. Zusammengeführt werden alle Listen zusammen und Sie sollten ein sortiertes deck.