Sortieralgorithmus

imoTheTall

Mitglied
Ich möchte folgendes Array sortieren:

[ y, z, x, z , y , x]

sodass alle z ganz rechts stehen, y in der Mitte und x ganz links.
Ich komme auf keinen richtigen Ansatz und würde mich über Hilfe freuen :)
Danke im Vorraus!
 

KonradN

Super-Moderator
Mitarbeiter
Ich möchte folgendes Array sortieren:

[ y, z, x, z , y , x]

sodass alle z ganz rechts stehen, y in der Mitte und x ganz links.
Ich komme auf keinen richtigen Ansatz und würde mich über Hilfe freuen :)
Danke im Vorraus!
Also erst einmal wäre wichtig, was für einen Datentyp Du da hast. Das ist so erst einmal nicht wirklich erkennbar.

Wenn Du da Buchstaben haben willst, dann können das einzelne Buchstaben (char) sein: 'y', 'z, 'x' oder es können Strings sein ("y", "z", "x").
(Das, um die Literale korrekt darzustellen).

Dann ist die Reihenfolge die natürliche Ordnung, d.h. Du kannst direkt die üblichen Vergleichsmöglichkeiten nutzen und damit kannst Du entweder dein eigenen Algorithmus verwenden oder eben vorhandene a.la. Arrays.sort.

Wenn die natürliche Ordnung nicht die gewünschte Ordnung wäre, dann wäre ein Ansatz denkbar mit Comparator. Das dann auch entweder als eigene Implementierung oder eben mit den Java Framework internen Möglichkeiten.
 

Neumi5694

Top Contributor
BubbleSort ist am intuitivsten, mein persönlicher Favorit ist ShellSort, auch wenn es mittlerweile noch effizientere Methoden gibt, um das zu lösen.

Jeder Sortieralgorithmus setzt voraus, dass du bei 2 übergebenen Elementen entscheiden kannst, welches links, welches rechts steht oder ob sie beide gleichwertig sind.
So was nennt sich in Java Comparator. Das Ergebnis eines Comparators ist negativ, wenn das erste Element links stehen soll, positiv, wenn das zweite links stehen soll und 0, falls beide gleichwertig sind.

Fange damit an, dass du entweder einen Comparator selbst schreibst oder dir überlegst, welchen existierenden du nutzen kannst (String.compare, String.compareIgnoreCase,Character.compare, .....).
 

Ähnliche Java Themen

Neue Themen


Oben