C# Hill-Sortierung
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 (www.php.cn)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

Leitfaden zur C#-Serialisierung. Hier besprechen wir die Einführung, die Schritte des C#-Serialisierungsobjekts, die Funktionsweise bzw. das Beispiel.

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

Leitfaden zu Primzahlen in C#. Hier besprechen wir die Einführung und Beispiele von Primzahlen in C# sowie die Codeimplementierung.

Leitfaden zur Fakultät in C#. Hier diskutieren wir die Einführung in die Fakultät in C# zusammen mit verschiedenen Beispielen und Code-Implementierungen.

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.
