C# Hill-Sortierung
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Sort { class ShellSorter { public static int[] Sort(int[] a) { ShellSort(a); return a; } public static void ShellSort(int[] myArray) { int i, j, increment; int temp; for (increment = myArray.Length / 2; increment > 0; increment /= 2) { for (i = increment; i < myArray.Length; i++) { temp = myArray[i]; for (j = i; j >= increment; j -= increment) { if (temp < myArray[j - increment]) myArray[j] = myArray[j - increment]; else break; } myArray[j] = temp; } } } } }
Hill-Sortierung ist eine Verbesserung des Direkteinfügungs-Sortieralgorithmus. Seine Hauptidee besteht darin, zunächst die gesamte sortierte Sequenz in mehrere Teilsequenzen zu unterteilen und für jede Teilsequenz direkte Operationen durchzuführen. Einfügungssortierung: Wenn das gesamte Array grundsätzlich in Ordnung ist, führen Sie eine direkte Einfügungssortierung für alle durch. Dies wird verwendet, um eine neue geordnete Sequenz zu bilden. Die allgemeine Divisionsmethode besteht darin, dass der Abstand zwischen zwei Elementen d=n/2, n/4, n/8 ... usw. ist.
1. Grundidee:
Teilen Sie die gesamten zu sortierenden Datenelemente in mehrere Gruppen auf und sortieren Sie die Datenelemente in derselben Gruppe mithilfe der Direkteinfügemethode Elemente sind abgeschlossen. Der Sortiervorgang endet nach der Sortierung innerhalb einer Gruppe.
2. Fähigkeiten:
Die Zusammensetzung der Gruppe besteht nicht einfach aus „Segment für Segment geteilt“, sondern es werden Datensätze, die durch ein bestimmtes Inkrement dk getrennt sind, zu einer Gruppe gebildet und das Inkrement dk wird Schritt für Schritt gekürzt (z Beispiel: 5 nacheinander nehmen, 3,1) bis dk=1.
3. Vorteile:
Wenn die Elemente mit kleinen Schlüsselwortwerten schnell vorwärts bewegt werden können und die Reihenfolge grundsätzlich in Ordnung ist, kann die direkte Einfügungssortierung verwendet werden, und die Zeiteffizienz ist viel höher .
Beispiel eins:
Beispiel zwei:
Flussdiagramm
Wenn beim Einfügesortieralgorithmus die Originaldaten in Ordnung sind, müssen die Daten nicht verschoben werden, und die Effizienz des Einfügens ist erhöht Sortieralgorithmus Wird hauptsächlich bei der Datenbewegung verwendet. Daher ist ersichtlich, dass die Effizienz verbessert wird, wenn die Daten selbst geordnet oder grundsätzlich geordnet sind.
Das Obige ist der Inhalt der C#- und Hill-Sortierung. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com)!