Interface Bubblesort soll Arrays beliebiger Referenztypen sortieren können.

jeano

Neues Mitglied
Hallo zusammen, ich verzweifel grad an einer alten Klausuraufgabe und hoffe mir kann hier geholfen werden. Hier die Aufgabenstellung:

Sie arbeiten in einer Firma in der bisher die folgende Methode bubbleSort genutzt wurde,
um int-Arrays aufsteigend zu sortieren (das das Sortierverfahren langsam ist, interessiert uns
an dieser Stelle nicht).
Java:
public class Util {
  //..
    public static void bubbleSort(int[] folge) {
      for (int i = 0; i < folge.length; i++) {
        for (int j = 0; j < folge.length - 1; j++) {
          if (folge[j] > folge[j + 1]) {
            swap(folge, j, j + 1);
         }
       }
     }
   }
}
Ihre Aufgabe besteht nun darin, die Methode bubbleSort so umzuschreiben, dass nicht nur
int-Arrays, sondern Arrays von beliebigen Referenztypen sortiert werden können. Die Voraussetzung
ist nur, dass die Objekte vergleichbar sind (Hinweis: sie Java-API im Anhang (s. Anhang). Geben Sie zunächst die neue Implementierung der Methode bubbleSort an:

....


Geben Sie nun noch die Implementierung einer passenden swap-Methode an! Die swap-
Methode vertauscht die Referenzen an den übergebenen Array-Positionen:

Da hab ich mir folgendes überlegt:
Java:
public void swap (Object[] folge, int j, int k){
  Object hilf;
  hilf = folge[j];
  folge[j] = folge[k];
  folge[k] = hilf;
}

passt das?
Bin um jede Hilfe dankbar!
 

Anhänge

  • Hilfsmittel.jpg
    Hilfsmittel.jpg
    82 KB · Aufrufe: 37
Zuletzt bearbeitet von einem Moderator:
Stichwort Java Generics:

Deine Methodensignatur könnte so aussehen:

Java:
public static <T extends Comparable<T>> void bubbleSort(T[] array) {
//doSth
}

Du steckst also beliebe Arrays vom Typ "T" rein und weißt nur, dass die comparable sind.
Dann sortierst du nicht mehr wie bei ints über > oder < sonder mit der compareTo()-Funktion.

Die swap Methode kannste dann ganz einfach so machen:
Java:
public <T>void swap (T[] folge, int j, int k){
T hilf;
hilf = folge[j];
folge[j] = folge[k];
folge[k] = hilf;
}

#Edit: Ups, schon wieder zu spät :/
 
Zuletzt bearbeitet:
@Tarrew:
Du hast ja auch mehr geschrieben 😀
Die swap-funktion sollte natürlich nicht nur für Comparable-Datentypen sein, denn damit schränkt man sich nur unnötig ein. Es wird ja dabei auch nirgends compareTo benutzt...
 
Zuletzt bearbeitet:
Stimmt wohl, irgendwie war ich nur auf das Sortieren fixiert, aber man könnte sie ja noch anders verwenden ;D

Habs mal editiert, Danke.
 

Zurück
Oben