Java: Generischer Bubblesort Algorithmus #1

Bubblesort ist ein ineffizienter, dafür sehr leicht zu implementierender Sortieralgorithmus. Er beruht darauf, dass falls sich zwei Elemente eines Arrays in eine gewisse Richtung (größer/kleiner) unterscheiden, diese vertauscht werden, dass so lange, bis nichts mehr vertauscht wurde.

Zutaten für ein Bubblesort:

  • 2 Schleifen
  • 1 If-Abfrage
  • 2 Hilfsvariablen
  • 1 Array


C String (Char) Sortierung:

char * bubblesort(const char *str){
    do{
        shifted = 0;
        for (int i = 1; i < strlen(str); i++){
            if (str[i] < str[i - 1]){ //
        ~~~    Die eigentliche Logik ~~~
                tmp = str[i];
                str[i] = str[i - 1];
                str[i - 1] = tmp;

                shifted = 1;
            }
        }
    } while (shifted != 0);
    return str;
}


Möchte ich jetzt jedoch einen int-Array sortieren, darf ich das Ganze nochmal neu schreiben. Einen void* Pointer könnte ich noch reinwerfen, da möchte ich dann aber lieber nicht wissen, was raus kommt.

Dieses Problem, ein und dieselbe Klasse/Methode für mehrere Typen verwenden zu können und gleichzeitig Typensicherheit zu gewährleisten, wurde mit Einführung der Generics in Java5 gelöst.
Ein Beispiel dafür, ist die ArrayList:

ArrayList<T> arrayList;

Das T im Diamant-Operator <>, gibt hier den Datentyp an.
Daraus folgend wird hier eine Instanz von ArrayList definiert, die Daten des Objekttyps Integer enthält:

ArrayList<Integer> arrayList;


Weiter im nächsten Post.