Tri C# Hill

黄舟
黄舟original
2017-02-09 16:10:302036parcourir

Tri Hill C#

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;  
                }  
            }  
        }  
    }  
}

Le tri Hill est une amélioration de l'algorithme de tri par insertion directe. Son idée principale est d'abord de diviser l'intégralité de la séquence triée en plusieurs sous-séquences et d'effectuer des opérations directes sur chaque sous-séquence. Tri par insertion, lorsque l'ensemble du tableau est fondamentalement en ordre, effectuez un tri par insertion directe sur tous. Ceci est utilisé pour former une nouvelle séquence ordonnée. La méthode de division générale est que la distance entre deux éléments est d=n/2, n/4, n/8... et ainsi de suite.
1. Idée de base :
Divisez l'ensemble des éléments de données à trier en plusieurs groupes, et triez les éléments de données dans le même groupe en utilisant la méthode d'insertion directe, le nombre de groupes est progressivement réduit, et lorsque toutes les données ; les éléments sont terminés Le processus de tri se termine après le tri au sein d'un groupe.
2. Compétences :
La composition du groupe n'est pas simplement "divisée segment par segment", mais les enregistrements séparés par un certain incrément dk sont formés en groupe, et l'incrément dk est raccourci étape par étape (pour exemple, en prenant 5 à tour de rôle, 3,1) jusqu'à ce que dk=1.
3. Avantages :
Si les éléments avec de petites valeurs de mots-clés peuvent être avancés rapidement et si la séquence est fondamentalement en ordre, alors le tri par insertion directe peut être utilisé et l'efficacité du temps sera beaucoup plus élevée. .

Exemple un :

Tri C# Hill

Tri C# Hill

Exemple deux :

Tri C# Hill

Organigramme

Tri C# Hill

Pour l'algorithme de tri par insertion, si les données d'origine sont en ordre, alors les données n'ont pas besoin d'être déplacées et l'efficacité de l'insertion algorithme de tri Principalement consommé dans le mouvement des données. Par conséquent, on peut voir que si les données elles-mêmes sont ordonnées ou essentiellement ordonnées, l'efficacité sera améliorée.

Ce qui précède est le contenu du tri C# et Hill. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Structures et classes C#Article suivant:Structures et classes C#