In diesem Artikel wird hauptsächlich vorgestellt, wie Java acht häufig verwendete Sortieralgorithmen erreicht: Sortieren, Sortieren, Sortieren, Sortieren, Sortieren, Fusionssortieren, Stapelauftrag und LST -Basis -Sortierung.
Einstufung
1) Sortier einfügen (direkt eingesetzt, Sortierung, Hügelsortierung)
2) Austauschsortierung (sprudelndes Sortieren, schnelles Sortieren)
3) Sortieren auswählen (Wählen Sie direkt Sortieren, gestapelter Sortieren).
4) Sortierung zusammenführen
5) Verteilung und Sortierung (Basissortierung)
Der erforderliche Hilfsraum ist am meisten: der am meisten Hilfsraum für Fusionen und Sortier
Instabil: schnell sortieren, Hügelsart, gestapelte Sortierung.
Werfen wir einen Blick auf die Beziehung zwischen 8 Sortierungen:
1. Einlegen Sie direkt die Sortierung ein
(1) grundlegende Ideen: Unter den Sets, die sortiert werden sollen, ist die Zahl der Zeile bereits Zeile (n-1) [n> = 2].
In der Reihenfolge wird jetzt die NN -Nummer in die vorherige Bestellung eingefügt, so dass diese N -Nummer
Es ist auch in Ordnung. Dies wird wiederholt zirkuliert, bis die gesamte Reihenfolge in Ordnung ist.
(2) Beispiel
(3) mit Java realisieren
Paket com.njue; 17,18,23,34,15,35,25,53,51}; Temp = a [i]; test;} für (int i = 0; i <A.Length; i ++) {System.out.println (a [i]);}}}}}2. Hill Sort (minimale inkrementelle Sortierung)
(1) Grundlegende Ideen: Die Anzahl der Gruppen, die vom Algorithmus sortiert werden sollen, wird gemäß der Anzahl der erhöhten D (n/2, n als zu sortierende Anzahl) in mehrere Gruppen unterteilt. und sortiert und dann eine kleinere Erhöhung (d/2), um sie zu gruppieren, und dann direkt die Sortierung in jede Gruppe einfügen. Wenn das Inkrement auf 1 reduziert wird, wird die Sortierung direkt eingefügt und die Sortierung abgeschlossen.
(2) Beispiel:
(3) mit Java realisieren
PublicClassSort {publicShellSort () {int a [] = {1,54,3,78,34,12,45,56,100}; .Ceil (d1/2); ) {int j = id; j+d] = temp;}} if (d == 1) {break;} für (int i = 0; i <a.Length; i ++) {System.out.println (a [i]);} }}3. Einfache Sortierauswahl
(1) Grundlegende Ideen: Wählen Sie in einer zu sortierenden Gruppe die kleinste Anzahl der Anzahl der Zahlen und die erste Position aus.
Finden Sie dann die kleinste Anzahl der zweiten Position in den verbleibenden Zahlen, damit die Schleife mit der letzten Anzahl der letzten Zahl und der letzten Zahl verglichen wird.
(2) Beispiel:
(3) mit Java realisieren
öffentliche Klasse SELECTSORT {public selectSort () {int a [] = {1,54,3,78,34,12,45}; ) {int j = i+1; j] pose = j;}} a [posity] = a [i]; ich] );}}4. Heapsortierung
(1) Grundlegende Ideen: Packsortierung ist eine von Baum geführte Sortierauswahl, was eine effektive Verbesserung der direkten Sortierauswahl darstellt.
Die Definition des Haufens lautet wie folgt: eine Sequenz (H1, H2, ..., Hn) mit N -Elementen und nur so zufrieden (hi> = h2i, hi> = 2i+1) oder (hi <= h2i, hi <= 2i 2i) +1) (i = 1,2, ..., n/2) wird als Stapel bezeichnet. Hier diskutieren wir nur die Stapel, die den Bedingungen der ersteren erfüllen. Aus der Definition des Haufens ist ersichtlich, dass das obere Element (dh das erste Element) das größte Element sein muss (ein großer Top -Müllkippe). Kompletter binärer Baum kann die Struktur des Haufens intuitiv darstellen. Die Oberseite des Stapels ist verwurzelt, und die anderen sind links unteren und rechten Unterböden. Zunächst werden die zu sortierten Sequenzen als ein binärer Baum angesehen, der in der Reihenfolge gespeichert ist und ihre Lagerbestellung so einstellt, dass sie ein Stapel werden. Tauschen Sie dann den Stammknoten mit dem letzten Knoten des Haufens aus. Geben Sie dann die vorherige (n-1) Nummer neu an, um sie zu stapeln. Nach diesem Typ, bis es nur zwei Knoten gibt und sie austauschen und schließlich eine geordnete Abfolge von n Knoten erhalten. Aus der Perspektive der Algorithmusbeschreibung erfordert die Stapelsequenzierung zwei Prozesse. Daher gibt es zwei Funktionen der Haufen -Sortierung. Eine ist die Eindringfunktion des Stapels, und das andere besteht darin, die Infiltrationsfunktion wiederholt aufzurufen, um die Sortierfunktion zu implementieren.
(2) Beispiel:
Anfangssequenz: 46,79,56,38,40,84
Konstruktion:
Austauschen, die maximale Zahl vom Stapel treten
Die verbleibenden Knoten werden erneut gebaut und die maximale Anzahl wird ausgetauscht
Push in Ordnung: Die letzten beiden Knoten im letzten Stapel der letzten beiden Knoten werden ausgetauscht, einer wird rausgeschmissen und die Art ist abgeschlossen.
(3) mit Java realisieren
Import Java.util.Arrays; , 15,35,25,53,51}; Länge; 0, ArrayLength-I); Gonerald method stub int tmp = data [i]; ) {// Todo Auto-Gonement-Methode Stup Int k = i; Der BiggerIndex ist kleiner als lastIndex, dh der richtige Knoten des K -Knotens, der den K -Knoten darstellt, der durch BiggerIndex+1 dargestellt wird ] <Data [BiggerIndex+1]) {// BiggerIndex zeichnet immer den Index BiggerIndex ++;} // fest, wenn der Wert des K -Knotens geringer ist als der Wert des K -Knoten ] <Data [BiggerIndex]) {// ihren Swap (Daten, K, BiggerIndex); als der Wert der linken und rechten Knoten.5. Blasensortierung
(1) Grundlegende Ideen: In einer zu sortierenden Gruppe sind alle Zahlen innerhalb des Umfangs, die noch nicht entladen sind, Vergleich und Anpassung der beiden benachbarten zwei Zahlen von oben bis unten, so dass die größeren eingelassen werden, die ein kleineres Versenken sind. Das heißt: Wenn zwei benachbarte Zahlen verglichen werden, stellen sie fest, dass ihre Sortier- und Sortieranforderungen entgegengesetzt sind und sie austauschen.
(2) Beispiel:
(3) mit Java realisieren
öffentliche Klasse Bubblesort {publicBbitSort () {inta [] = {49,38,65,97,76,13,49,78,34,5,4,62,98,54,54,56, 17,18,23 34,15,35,25,53,51}; Länge-1-i; +1] = temp;}}} für (int i = 0; i <A.Length; i ++) {System.out.println (a [i]);}}6. schnell sortieren
(1) Grundlegende Ideen: Wählen Sie ein Benchmark -Element aus, wählen Sie normalerweise das erste Element oder das letzte Element. Benchmarkelement.
(2) Beispiel:
(3) mit Java realisieren
PublicClass Quicksort {inta [] = {49,38,65,97,76,13,27,78,34,264,5,49,98,54,56,17,18 23,34,15,35,25 , 53,51}; [] Liste, int niedrig) {int tmp = list [niedrig]; Hoch-;} Liste [niedrig] = Liste [hoch]; [High] = LISTE [Niedrig]; int niedrig, int hoch) {if (niedrig <hoch) {int Middle = getMiddle (Liste, niedrig, hoch); Sortierung von Tisch mit niedrigem Charakter (LISTE, MIDER + 1, Hoch); Array ist leer_quicksort (A2,0, A2.Length -1);}}}7. Sortierung zusammenführen
(1) Basissorten: Anhang (Merge) Sortiermethode besteht darin, zwei (oder mehr) oder mehr Formulare in eine neue Ordnung zu verschmelzen, dh Vorwort. Kombinieren Sie dann die Ordersequenz in die Gesamtreihenfolge.
(2) Beispiel:
(3) mit Java realisieren
Import Java.util.Arrays; , 15,35,25,53,51}; (a [i]);} publicVoid sortieren (int [] Daten, int links, int rechts) {// todo-goneraltedMethod stub if (links <rechts) { / / / / find Intermediate Index int Center = (links+rechts) /2; ;}} PublicVoid merge (int [] data, int links, int, int rechts) {// Todo-goneorates int [data.Length]; Middle Array Int Project = links; ]) {tmparr [dritter ++] = data [links ++];} else {tmparr [dritter ++] = data [Mid ++]; ++];} while (links <= center) {tmparr [dritter ++] = data [links ++]; println (arrays.tostring (data));8. Basissortierung
(1) Grundlegende Ideen: Uniform alle Vergleichswerte (positive Ganzzahlen) mit derselben Zahlenlänge, und die Anzahl der kurzen Ziffern wird vor Null erfunden. Beginnend von der niedrigsten Position und Sortieren nacheinander. Dies wird zu einer geordneten Sequenz von der niedrigsten Position bis zur höchsten Bitsortierung.
(2) Beispiel:
(3) mit Java realisieren
Java.util.ArrayList; 54,101,56,17,18,23,34,15,35,25,53,51}; {system.out.println (a [i]);}} public void sort (int [] array) {// Erstmals die Anzahl der Sortierträge bestimmen; <array.length; Zeit ++;} // 10 Warteschlangen erstellen; INS> (); <Array; int) math.pow (10, i 10, i); 0 // Element -Zähler; = queue.get (k);Das obige ist der gesamte Inhalt dieses Artikels.