import java.util.*;
public class Dealer {
public static void main(String[] args){
ArrayList<Card> cards = new ArrayList<Card>();
for (Suits s : Suits.values()) {
for (Cards r : Cards.values()) {
Card value = new Card(s,r);
cards.add(value);
}
}
shuffle(cards);
present(cards);
System.out.println();
cards = selectionSort(cards);
present(cards);
}
private static void shuffle(ArrayList<Card> list){
Collections.shuffle(list);
}
private static void present(ArrayList<Card> list){
int count = 0;
for (Card c : list){
count++;
System.out.println(c.toString());
}
}
private static ArrayList<Card> selectionSort(ArrayList<Card> list){
int min;
int count = 0;
for (int i = 0; i < list.size(); i++) {
count++;
// Assume first element is min
min = i;
for (int j = i + 1; j < list.size(); j++) {
if (list.get(j).Get() < list.get(min).Get()) {
min = j;
}
}
if(min != i){
final Card temp = list.get(i);
list.set(i,list.get(min));
list.set(min,temp);
}
// System.out.println(list.get(i));// I print the in ascending order
}
System.out.println("================================== Sorted Deck Below =========================================================");
System.out.println("It took "+count+" iterations to sort this deck using selection sort.");
System.out.println();
return list;
}
private static ArrayList<Card> InsertionSort(ArrayList<Card> list){
int count = 0;
for (int i = 1; i < list.size(); i++) {
Card temp = list.get(i);
int j;
for(j = i-1;j>=0&&temp.Get()<list.get(j).Get(); j--){
list.set(j+1,list.get(j));
}
list.set(j+1,temp);
count ++;
}
System.out.println("================================== Sorted Deck Below =========================================================");
System.out.println("It took "+count+" iterations to sort this deck using insertion sort.");
System.out.println();
return list;
}
public static ArrayList<Card> mergeSort(ArrayList<Card> list){
if (list.size() ==1){
return list;
}
else {
int mid= list.size()/2;
ArrayList<Card> left= new ArrayList<Card>(mid);
ArrayList<Card> right=new ArrayList<Card>(list.size()-mid);
for (int i = 0; i < mid; i++) {
left.add(list.get(i));
}
for (int i = 0; i < list.size()-mid; i++) {
right.add(list.get(i));
}
left=mergeSort(left);
right=mergeSort(right);
merge(left,right,list);
}
return list;
}
public static void merge (ArrayList<Card>left,ArrayList<Card>right,ArrayList<Card>list){
int i1=0;// left Index
int i2=0;// right Index
int ListIndex=0;
for (int i = 0; i < list.size(); i++) {
if (i2>=right.size() || (i1<left.size() && (right.get(i)>=left.get(i))))
{
list.set(ListIndex,left.get(i1));
ListIndex++;
}
else {
list.set(ListIndex, right.get(i2));
ListIndex++;
}
}
}
}
=========================================== ================================
// Created enums
enum Cards{
Ace,King,Queen,Jack,Ten,Nine,Eight,Seven,Six,Five,Four,Three,Two
}
enum Suits{
Spades,
Hearts,
Diamonds,
Clubs
}
public class Card{
private Suits suit;
private Cards card;
public Card(Suits suit, Cards card){
this.suit = suit;
this.card = card;
}
public int Get(){
return (suit.ordinal())+card.ordinal()*4;
}
public String toString(){
return card.toString()+" of " +suit.toString();
}
}
Dies ist, was ich weiß, habe, nachdem ich einige bat von meinen Freunden und sie sagten versuchen ArrayList der Objektkarte, die ich glaube, jetzt ist persönlich härter wegen der Merge Sort, die ich weiß, funktioniert nicht, aber ich kann nicht scheinen, herauszufinden, wie man es mit ArrayList implementieren.
Wir können nicht alle Ihre Hausaufgaben für Sie erledigen.Dies sind ziemlich einfache Dinge, die Sie mit Ihrem eigenen Wissen erreichen können. Wenn Sie auf einem _Specific_ Ding stecken bleiben, dann kommen Sie zurück und fragen Sie hier. Siehe [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (https://stackoverflow.com/help/mcve) – Orin