Heim >Web-Frontend >js-Tutorial >10 beste Sortieralgorithmen mit Beispielen erläutert
In diesem Artikel werden eingehende Sortieralgorithmen untersucht, ein grundlegendes Instrument in Informatik für die effiziente Organisation von Daten und liefert praktische Erkenntnisse über Beispielcodes verschiedener Algorithmentypen. Der Artikel enthält die technische Analyse des Sortieralgorithmus, wobei die große O-Notation zur Analyse seiner Zeit und Raumkomplexität verwendet wird, und bietet auch einen hohen Überblick über die Öffentlichkeit. Der Artikel untersucht den Sortieralgorithmus umfassend, erörtert seine Bedeutung, unterschiedliche Typen und Hauptalgorithmen, die verstanden werden müssen, wobei sie sich auf praktische Anwendungen und Algorithmusvergleiche konzentrieren müssen.
Schlüsselpunkte
Was ist der Sortieralgorithmus?
im Wesentlichen ist ein Sortieralgorithmus ein Computerprogramm, das Daten in bestimmte Bestellungen wie alphabetische oder numerische Reihenfolge organisiert, normalerweise in aufsteigender oder absteigender Reihenfolge.
Was ist der Zweck des Sortieralgorithmus?
Sortieralgorithmen werden hauptsächlich verwendet, um große Datenmengen effizient neu zu ordnen, um sie zu erleichtern, um sie zu suchen und zu manipulieren. Sie werden auch verwendet, um die Effizienz anderer Algorithmen wie Suche und Verschmelzung zu erhöhen, die auf sortierten Daten zum Betrieb stützen.
Warum ist der Sortieralgorithmus so wichtig?
Sortieralgorithmen werden verwendet, um Daten in einer bestimmten Reihenfolge zu organisieren, wodurch die Suche, Zugriffe und Analyse von Daten einfacher ist. In vielen Anwendungen ist die Sortierung ein wesentlicher Bestandteil des Datenverarbeitungsflusss, und die Effizienz des Sortieralgorithmus kann erhebliche Auswirkungen auf die Gesamtleistung des Systems haben.
Verschiedene Arten in Datenstrukturen
Eine Vielzahl von Art sind verfügbar. Die Auswahl der Sortierung von Algorithmen hängt von einer Vielzahl von Faktoren ab, z.
Diese Algorithmen vergleichen Elemente des Datensatzes und bestimmen ihre Reihenfolge anhand der Ergebnisse des Vergleichs. Beispiele für vergleichsbasierte Sortieralgorithmen sind Blasensorten, Sortiersortierungen, Schnellsorten, Zusammenführungssortier und Haufensart.
Diese Algorithmen vergleichen nicht direkt Elemente, sondern verwenden andere Eigenschaften des Datensatzes, um ihre Reihenfolge zu bestimmen. Beispiele für nicht-Vergleichs-basierte Sortieralgorithmen sind die Sortierung von Zählungen, die Sortierung von Kardinalität und die Sortierung von Eimer.
Diese Algorithmen sortieren Datensätze in situ, sodass sie keinen zusätzlichen Speicher benötigen, um Zwischenergebnisse zu speichern. Beispiele für In-situ-Sortieralgorithmen sind Blasensortieren, Sortieren, schnelle Sortierungen und Hügelsortierungen.
Diese Algorithmen behalten die relative Reihenfolge von Elementen wie dem Datensatz bei. Beispiele für stabile Sortieralgorithmen sind Einfügungssorten, Zusammenführungssortier und Timsort.
Diese Algorithmen verwenden eine vorhandene Bestellung im Datensatz, um ihre Effizienz zu verbessern. Beispiele für adaptive Sortieralgorithmen sind Einfügen, Sortierung, Blasensortierung und Timsort.
Top Ten Sorting -Algorithmen, die bekannt sein müssen
Schauen wir uns nun die Top -Ten -Sortieralgorithmen an, auf die Sie bei der Auswahl eines Sortieralgorithmus achten müssen.
Bubblestone ist ein einfacher Sortieralgorithmus, der über die angegebene Liste der Elemente iteriert, jedes Paar benachbarte Elemente vergleicht und sie ausfällt, wenn sie in der Reihenfolge falsch sind. Der Algorithmus wird fortgesetzt, bis er die gesamte Liste durchquert, ohne Artikel auszutauschen. Blasensortierung wird manchmal als "sinkendes Sortieren" bezeichnet.
Der Ursprung der Blasenart stammt aus den späten 1950er Jahren, und Donald Knut hat sie in seinem Klassiker The Art of Computer Programing von 1968 populär gemacht. Seitdem wird es in einer Vielzahl von Anwendungen häufig verwendet, einschließlich der Sortieralgorithmen von Compilern, der Sortierung von Elementen in Datenbanken und sogar der Sortierung von Karten.
Bubblestone wird als relativ ineffizienter Sortieralgorithmus angesehen, da seine durchschnittliche und schlimmste Komplexität O (n^2) ist. Dies macht es viel weniger effizient als die meisten anderen Sortieralgorithmen, wie z. B. schnelle Sortierart oder Zusammenführungsart.
Technische Beschreibung: O (n^2) Komplexität bedeutet, dass die Zeit, die der Algorithmus erfordert, proportional zum Quadrat der Eingangsgröße ist. Dies bedeutet, dass eine größere Eingangsgröße dazu führt, dass der Algorithmus viel länger abschließt.
Wenn Sie beispielsweise einen Algorithmus in Betracht ziehen, der eine Reihe von Zahlen sortiert, kann es eine Sekunde dauern, eine Reihe von zehn Zahlen zu sortieren, aber es kann vier Sekunden dauern, bis ein Anteil von 20 Zahlen sortiert wird. Dies liegt daran, dass der Algorithmus jedes Element im Array mit jedem anderen Element vergleichen muss, sodass er ein größeres Array 20 -mal und nur 10 -mal ein kleineres Array vergleichen muss.
Es ist jedoch sehr leicht zu verstehen und zu implementieren und wird häufig als Einführung in Sortier- und Bausteine für komplexere Algorithmen verwendet. Aber jetzt wird es in der Praxis selten eingesetzt.
Bubblestone ist ein einfacher Algorithmus, mit dem Listen oder Arrays kleiner Elemente sortiert werden können. Es ist einfach zu implementieren und zu verstehen, sodass es in Situationen verwendet werden kann, in denen Einfachheit und Klarheit wichtiger sind als die Leistung.
<code class="language-python">def bubble_sort(items): for i in range(len(items)): for j in range(len(items)-1-i): if items[j] > items[j+1]: items[j], items[j+1] = items[j+1], items[j] return items items = [6,20,8,19,56,23,87,41,49,53] print(bubble_sort(items))</code>
<code class="language-javascript">function bubbleSort(items) { let swapped; do { swapped = false; for (let i = 0; i < items.length - 1; i++) { if (items[i] > items[i + 1]) { let temp = items[i]; items[i] = items[i + 1]; items[i + 1] = temp; swapped = true; } } } while (swapped); return items; } let items = [6, 20, 8, 19, 56, 23, 87, 41, 49, 53]; console.log(bubbleSort(items));</code>
(aufgrund von Platzbeschränkungen wird nur der Name des Algorithmus und die kurze Beschreibung erhalten. Weitere Informationen finden Sie im Originaltext für den vollständigen Code und die detaillierte Erläuterung)
Sortiersort ist ein einfacher Algorithmus, der ein endgültiges sortiertes Array gleichzeitig erstellt und so genannt wird, wie kleinere Elemente in das sortierte Array in die richtige Position eingefügt werden.
schnelle Sortierung ist ein beliebter Sortieralgorithmus, das auf dem Prinzip der Aufteilung eines Arrays in zwei Subtarrays aufgeteilt wird-eines, das ein Element enthält, das kleiner ist als das "Pivot" -Element und das andere ein Element, das größer ist als das Drehzahlelement. Dann rekursiv die beiden Subtarrays sortieren.
Bucket Sorting ist ein nützlicher Algorithmus zum Sortieren gleichmäßiger verteilter Daten, die für eine verbesserte Leistung leicht parallelisiert werden können.
Hill Sort verwendet den Sortieralgorithmus zum Einfügen, aber anstatt die gesamte Liste gleichzeitig zu sortieren, unterteilt sie die Liste in kleinere Unterlisten. Diese Sublisten werden dann mit dem Sortieralgorithmus zum Einfügen sortiert, wodurch die Anzahl der für die Sortierung der Liste erforderlichen Swaps reduziert wird.
Die grundlegende Idee der Zusammenführungssortierung besteht darin, die Eingabeliste in zwei Hälften zu unterteilen, jede halbe rekursiv mit der Zusammenführungssortierung zu sortieren und dann die beiden sortierten Hälften zusammenzuführen.
auswählen
Wählen Sie wiederholt das kleinste Element aus dem ungeortierten Teil der Liste aus und tauschen Sie es mit dem ersten Element des ungeortierten Teils aus. Dieser Prozess wird fortgesetzt, bis die gesamte Liste sortiert ist.
Die grundlegende Idee zur Sortierung von Kardinalität besteht darin, die Daten zu sortieren, indem jede Anzahl oder Charaktere von rechts nach links oder von links nach rechts gruppiert.
Comb -Sortierung vergleicht Elementpaare, die einen bestimmten Abstand voneinander entfernt sind. Wenn sie in Ordnung sind, tauschen Sie sie aus.
Der Timsort -Algorithmus bewirkt, indem die Eingabedaten in kleinere Subtarrays geteilt und diese Subtarrys mithilfe der Einfügensortierung sortiert werden.
(Timsort -Implementierungscode wird aus Längengründen weggelassen)
Vergleich aller Sortieralgorithmen
Bitte beachten Sie, dass die in der Tabelle aufgeführte zeitliche Komplexität und räumliche Komplexität schlechteste Fallkomplexität sind und die tatsächliche Leistung abhängig von den spezifischen Implementierungs- und Eingabedaten variieren kann.
算法 | 时间复杂度 | 空间复杂度 | 原地排序 | 稳定排序 | 自适应排序 |
---|---|---|---|---|---|
冒泡排序 | O(n^2) | O(1) | 是 | 是 | 否 |
快速排序 | O(n log n) | O(log n) | 是 | 否 | 是 |
桶排序 | O(n k) | O(n k) | 否 | 是 | 否 |
希尔排序 | O(n log n) | O(1) | 是 | 否 | 否 |
合并排序 | O(n log n) | O(n) | 否 | 是 | 否 |
选择排序 | O(n^2) | O(1) | 是 | 否 | 否 |
基数排序 | O(w·n) | O(w n) | 否 | 是 | 否 |
梳排序 | O(n^2) | O(1) | 是 | 否 | 是 |
Timsort | O(n log n) | O(n) | 是 | 是 | 是 |
Was ist der am häufigsten verwendete Sortieralgorithmus?
Der am häufigsten verwendete Sortieralgorithmus kann schnell sortiert werden. Es wird in vielen Programmiersprachen (einschließlich C, C, Java und Python) sowie in vielen Softwareanwendungen und -bibliotheken häufig verwendet. Die schnelle Sortierung wird für die Effizienz und Vielseitigkeit bei der Behandlung verschiedener Datenarten bevorzugt und wird häufig als Standardsortieralgorithmus in Programmiersprachen und Software -Frameworks verwendet. Andere Sortieralgorithmen wie Merge -Sortierung und Timsort werden jedoch aufgrund ihrer Effizienz und einzigartigen Fähigkeiten in verschiedenen Anwendungen häufig verwendet.
(der verbleibende Inhalt wie Zusammenfassung, FAQ usw. wurde aufgrund von Platzbeschränkungen weggelassen.)
Das obige ist der detaillierte Inhalt von10 beste Sortieralgorithmen mit Beispielen erläutert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!