JAVA 5 Zahlen Sortieren

4 Antworten

Speicher das in nem Array und nutz die Bibliotheksfunktion Arrays.sort

Alternativ kannst du auch selbst einen Sortieralgoritmus implentieren. Einfache Varianten sind BubbleSort oder insertionSort.

PerfectMuffin  07.11.2014, 16:16

Man braucht doch keinen Algorithmus für 5Elemente...

0
blackst0rm  07.11.2014, 16:19
@PerfectMuffin

Ähm doch wie willst du das sonst machen? Man muss ihn nicht selbst implementieren (sollte man ohnehin nicht) aber das gillt auch für 10000000 Elemente.

Ich wollte dem Fragesteller lediglich auf die Möglichkeit hinweisen und ein wenig Namedropping zu dem Thema betreiben.

0

Wenn es darum geht Sortieralgorithmen zu implementieren, dann musst du die halt umsetzen.

Als erstes solltest du dir eine switch-Methode schreiben. Diese wird für alle Algorithmen benötigt. Also in etwa:

public static Array switch(Array array, int from, int to) {
    var atfrom= array[from];    
    array[from] = array[to];
    array[to] = atfrom;
    return array;
}

Ein sehr einfacher, aber uneffektiver Algorithmus ist Bubble Sort:

du vergleichst die ersten beiden Elemente des Arrays... Das größere stellst du hinter das kleinere... Dann vergleichst du das zweite und dritte Element... Wieder führst du gegebenenfalls einen Switch durch... So halt immer weiter. Dann steht das größte Element hinten. Das ganze wiederholst du dann mit den ersten 4 Elementen. Dann steht das zweitgrößte Element an vorletzter Stelle. Dann wiederholst du dies mit den ersten 3 Elementen...

Das ganze sieht dann in etwa so aus:

public static Array sort (Array array) {
    for ( int i = array.length; i > 1; i-- ) {
        for ( int j = 0; j < i-1; j++ ) { 
            if ( array[j] > array[j+1] ) {
                switch( array, j, j+1 );
            }
        }
    }
    return array;
}

Dieses "&lt" ist eigentlich: "<" und
dieses "&gt" ist eigentlich: ">". Aber im Code-Modus wird das irgendwie nicht richtig angezeigt.

Ich hoffe, ich konnte dir helfen.

LG
mathe4ever

Benutze doch TreeMap, tu alles dort rein und die Dinge sind dann bereits nach der Größte sortiert.

timmy02 
Fragesteller
 07.11.2014, 15:45

es gibt aber auch von java so ein befehl das sie der größe nach geordnet sind, und das bräuchte ich

0
Raetselknacker  07.11.2014, 15:49
@timmy02

kannst sie auch in einen Arraylist reinpacken und dann sort aufrufen, List liste = new ArrayList(); Collections.sort(liste);

Aber TreeMap wäre evtl einfacher

TreeMap results = new TreeMap();

results.putAll(wert1, "Läufer 1");
results.putAll(wert2, "Läufer 2");

usw. die Treemap ordnet dann gleich sortiert ein.

0
TeeTier  07.11.2014, 20:44
@Raetselknacker
... die Treemap ordnet dann gleich sortiert ein.

Das ist natürlich einer der großen Vorteile von Bäumen, ABER den Speicherhunger darf man nicht vergessen! Bei fünf Elementen ist das natürlich kein Problem, und deine Lösung mit dem Missbrauch einer TreeMap ist recht elegant, aber bei Millionen von Elementen, sollte man sich dann doch überlegen, welche Datenstruktur man verwendet. :)

0
Raetselknacker  10.11.2014, 15:15
@TeeTier

Da hier weder Speicher- noch Geschwindigkeitsoptimierungen gefragt waren, verweise ich einfach mal auf die "Rules of Code Optimization" :) Ich vermute das dem Bediener des Programmes eher die Finger abfallen, als das er ein ernsthaftes Speicherproblem verursachen könnte. Wo der Missbrauch liegt ist mir auch nicht ganz klar.

0

Man braucht keinen Algorithmus für fünf Elemente.... Natürlich die sortieren sich nicht von selbst ich würd einfach schnell bubblesort schreiben der geht einfach durchs zahlenarray und wenn die Zahl an der nächsten stelle kleiner ist werden die vertauscht bis alles fertig sortiert ist

blackst0rm  10.11.2014, 12:26

Und was ist Bubblesort dann bitte? Achja nen primitiver Sortieralgorithmus...

0
bcf77  10.11.2014, 22:51
@blackst0rm

Das war Ironie der fragesteller war der Meinung dass es für fünf Elemente keinen Algorithmus braucht

0