C# Hill-Sortierung

黄舟
黄舟Original
2017-02-09 16:10:302028Durchsuche

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:

C# Hill-Sortierung

C# Hill-Sortierung

Beispiel zwei:

C# Hill-Sortierung

Flussdiagramm

C# Hill-Sortierung

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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C#-Strukturen und -KlassenNächster Artikel:C#-Strukturen und -Klassen