Sammelns.sort ()
Die Sortierung von Java kann mit Collectileos.Sort () implementiert werden.
Es gibt zwei Methoden, um die Liste mit der Sammlung zu sortieren. SORT -Methode:
Das erste ist das Objekt in der Liste, um die vergleichbare Schnittstelle wie folgt zu implementieren:
/*** Sortieren Sie den Benutzer nach der Reihenfolge*/öffentliche Klasse implementiert vergleichbar <Benutzer> {private String -Name; Name;} public Integer getrder () {return order;} public void setOrder (Integer order) {this.order = order;} public int vergleicheto (Benutzer arg0) {rn this.getorder (). );}} Prüfen:
Public class test {public void main (String [] art) {user user1 = new user (); ) User2.setOrder (2); (Liste); Das Ausgangsergebnis ist wie folgt
Ab
Die zweite Methode besteht darin, basierend auf der Lademethode von Sammlungen zu erreichen. SORT, wie z.
/*** Sortieren Sie den Benutzer nach der Reihenfolge*/Public Class User {// Es ist nicht erforderlich, die vergleichbare Schnittstelle zu implementieren. Rückgabeauftrag;} public void setOrder (Ganzzahlreihenfolge) {this.order = order;}}} Schreiben Sie in der Hauptklasse ::
Public class test {public void main (String [] art) {user user1 = new user (); ) User2.setOrder (2); Int compare (Benutzer arg0, Benutzer arg1) {return arg0.getorder (). getName ());}}} Das Ausgangsergebnis ist wie folgt
Ab
Die erstere Codestruktur ist einfach, kann jedoch nur nach den festen Attributen sortiert werden.
Wählen Sie das Beste.
Gemeinsamer Sortieralgorithmus
Schauen wir uns die Praxis des Java -Code mit mehreren klassischen Sortieralgorithmen an:
Blasensortierung
Public static void bubblesort (int a [], int n) {int i, j; J ++) {if (a [j]> a [j + 1]) {a [j] = a [j] ^ a [j + 1]; [J + 1];Sortieren Sie direkt ein
Public static void Insertort (int a [], int n) {int i, j, tmp; ; J; J> = 0; ;}}}Wählen Sie direkt
Public static void selectSort (int a [], int n) {int i, j, lokal; n; [loc] = a [i] ^ a [loc];Sortierung
/ ** * Heap -Sortierung (von klein bis groß) * * @param a * @param n */ public static void Heapsort (int a [], int n) {int tmp; n) für (int j = n-1; j> = 1; j--) {tmp = a [0]; 0, j);}} / ** * Konstruieren Sie viele Wurzeln * * * * * @param a * @param n * / privat static void BuildMaxheap (int a [], int n) {für (int i = ((int i = () (int i = () n -2) / 2; I * @param n * / private statische void maxheapify (int a [], int i, int n) {int links, rechts, lokal; i + 2; } if (loc! = i) {a [i] = a [loc] ^ a [i]; a [i];} else {break;}}}Schnell sortieren
Public static void Quicksort (int a [], int bt, int ed) {if (bt <ed) {int pivot = pivotputition (a, bt, ed); 1, ed);}} private statische void swapvar (int a [], int bt, int ed) {int Mid = bt + (ed -bt) / 2; ) bt] = a [bt] ^ a [Mid]; BT, int ed) {// den Zwischenwert als Stand in ein ordentliches Erscheinungsbild von SWAPVAR (a, bt, ed) nehmen; Ed) {while (bt <ed && a [ed]> = stand) {ed-;} if (bt <ed) {a [bt ++] = a [ed]; bt ++;} if (bt <ed) {a [eds ---] = a [bt];} [bt] = state;Verschmelzen
Public statische void mergesort (int a [], int bt, int ed) {if (bt <ed) {int Mid = Bt + (ed -BT) / 2; Ed); ; int tmp [] = new int [len]; = A [j]) {tmp [k] = a [i ++];} else {tmp [k] = a [j ++]; ] = a [j ++];} für (i = 0; i <k; i ++) {a [bt+i] = tmp [i];}}Testprogramm
Kommen Sie und fassen Sie den obigen Algorithmus zusammen:
Java.util.Scanner; Cin.Nextint (); ; // InsertSort (a, n); ** * SORGE SORT * * * * @param a * @param bt * @param eds * / public static void memort (int a [], int bt, int ed) {if <ed) {int mid = bt + (ed -BT) / 2; Param Bt * @param Mid * @param ed */ private statische Void Mergearray (int a [], int bt, int Mid, int ed) {int i, j, k, k, len = ed -Bt + 1; Tmp [] = new int [len]; <= a [j]) {tmp [k] = a [i ++];} else {tmp [k] = a [j ++];}} while (i <= mid) {tmp [k ++ ] = A [i ++];} while (j <= ed) {tmp [k ++] = a [j ++];} für (i = 0; i <k; i ++) {a [ bt+i] = tmp [i];} / ** * schnell sortieren * * * @param a * @param bt * @param ed * / public static void Quicksort (int a [], int bt, int ed) { If (bt <ed) {int pivot) = pivotPartition (a, bt, ed); a [], int bt, int ed) {int Mid = bt + (ed -Bt) / 2; ] = a [bt] [Mid]; param eds * @return */ private static int pivotPartition (int a [], int bt, int ed) {// Nehmen Sie den Zwischenwert als Stand, um das Array in einem ordnungsgemäßen Erscheinungsbild O (n^2) SWAPVAR (a) zu verhindern bt, ed); +] = a [ed];} while (bt <ed && a [bt] <= Stand) {bt ++;} if (bt <ed) {a [eds ---] = a [bt];} a [bt] = stand; ) {int tmp; [j]; a [j] = tmp; [], int n) {für (int i = (n -2) / 2; i> = 0; i-) {maxheapify (a, i, n);} / ** * Wartung des maximalen Wartungshaufens beginnen Aus dem Gebot i * * * * @param a * @param n * / privat static void maxheapify (int a [], int i, int n) {int links, rechts, lokal; 2 * i + 1; ]) {i = rechts;} if (loc! = i) {a) i] = a [loc] ^ a [i]; i] = a [loc] ^ a [i];} else {break;}}}}} / ** * Wählen Sie direkt sortieren * * @param a * @param n * / public static void selectSort (int a [ ], int n) {int i, j, lokal; (a [j] <a [loc]) {loc = j;}} if (loc! = i) {a) {a) [i] = a [i] ^ a [loc]; a [i] ^ a [loc]; (int a [], int n) {int i, j, tmp; 0; sortieren * * * @param a * @param n * / public static void bubblesort (int a [], int n) {int i, j; (j = 0; j <n -i -1; j ++) {if (a [j]> a [j +1]) {a [a j] = a [j] ^ a [j + 1]; * @param a * / public static void printarr (int a []) {für (int i = 0; i <.Length; i ++) {if (i == A.Length -1) {System.out. printf ("%d/n", a [i]);} else {System.out.printf ("%d", a [i]);}}}}}