Seltsam und sogar sortieren ist eine personalisiertere Sortierung. Die Grundidee besteht darin, merkwürdige Sequenzen in einer Reihenfolge zu ordnen, sogar Sequenzen in einer Reihenfolge, dann in einer anderen Reihenfolge und sogar in einer Reihenfolge, bis alle bestellt sind.
Lassen Sie uns ein Beispiel geben,
Array zu sortiert werden
[6 2 4 1 5 9]
Das erste Mal, dass eine ungerade Sequenz verglichen wird, wird die merkwürdige Sequenz mit ihren Nachbarn sogar Sequenz verglichen, z. B. 6 und 2, 4 und 1, 5 und 9
[6 2 4 1 5 9]
Nach dem Austausch wird es
[2 6 1 4 5 9]
Der zweite Vergleich gleicher Zahlen beträgt 6 und 1 und 5 und 5 sind
[2 6 1 4 5 9]
Nach dem Austausch wird es
[2 1 6 4 5 9]
Die dritte Reise ist eine ungerade Zahl, und die 2, 6 und 5 werden ausgewählt, um sie mit ihren Nachbarspalten zu vergleichen.
[2 1 6 4 5 9]
Nach dem Austausch
[1 2 4 6 5 9]
Die vierte sogar nummerierte Serie
[1 2 4 6 5 9]
Ein Austausch
[1 2 4 5 6 9]
Java -Implementierung:
static void ordnungsgemäß (int [] ary) {// Paritätsart Boolean Flag = true; while (flag) {boolean ungerade = false, sogar = false; für (int i = 0; i <ary.length - 1; i + = 2) {if (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]); ungerade = wahr; }} für (int i = 1; i <ary.length - 1; i + = 2) {if (ary [i]> ary [i + 1]) {ary [i] = ary [i + 1] + 0 * (ary [i + 1] = ary [i]); sogar = wahr; }} flag = ungerade || sogar; // Wenn falsch, bedeutet dies, dass es keinen Vergleich gibt, der den Bedingungen entspricht}}} Die obige Flagge = ungerade || sogar; Hat ein wahres, was darauf hinweist, dass es immer noch tauscht. Am Ende ist die Flagge nur falsch, wenn alle falsch sind.
Schreiben Sie es in Flag = Odd && sogar um; Wenn es einen falschen gibt, wird die Gesamtschleife nicht mehr abgeschlossen. Wie Bubble -Sortierung kann es die letzte innere Schleife verringern.