Maison  >  Article  >  développement back-end  >  Comment écrire un algorithme de tri rapide en utilisant C#

Comment écrire un algorithme de tri rapide en utilisant C#

王林
王林original
2023-09-19 15:28:41510parcourir

Comment écrire un algorithme de tri rapide en utilisant C#

Comment utiliser C# pour écrire un algorithme de tri rapide

L'algorithme de tri rapide est un algorithme de tri efficace Son idée est de diviser le tableau en sous-problèmes plus petits grâce à l'idée de​​diviser pour régner, puis résolvez ces sous-problèmes de manière récursive. Enfin, combinez-les pour obtenir la réponse à l'ensemble du problème.

Ci-dessous, nous présenterons en détail comment écrire un algorithme de tri rapide en utilisant C# et donnerons des exemples de code pertinents.

  1. Idée d'algorithme
    L'idée du tri rapide peut être résumée en trois étapes suivantes :
  2. Sélectionner un élément de référence, généralement le premier élément du tableau
  3. Placer les éléments dans le tableau qui sont plus petits que le ; élément de référence à gauche de l'élément de référence, placez les éléments plus grands que l'élément de base à droite de l'élément de base ;
  4. Effectuez un tri rapide récursif sur les sous-tableaux respectivement à gauche et à droite de l'élément de base ;
  5. Implémentation spécifique
    Voici le code d'implémentation spécifique de l'algorithme de tri rapide écrit en C# :
using System;

class QuickSort
{
    // 快速排序方法
    public static void Sort(int[] arr, int low, int high)
    {
        if (low < high)
        {
            // 将数组划分成两部分
            int partitions = Partition(arr, low, high);

            // 分别对划分后的两部分进行递归排序
            Sort(arr, low, partitions - 1);
            Sort(arr, partitions + 1, high);
        }
    }

    // 划分数组,并返回划分位置
    public static int Partition(int[] arr, int low, int high)
    {
        int pivot = arr[low]; // 基准元素
        int left = low;
        int right = high;

        while (left < right)
        {
            // 从右往左找到第一个小于基准元素的元素
            while (left < right && arr[right] >= pivot)
                right--;

            // 交换元素位置
            if (left < right)
                Swap(arr, left, right);

            // 从左往右找到第一个大于基准元素的元素
            while (left < right && arr[left] <= pivot)
                left++;

            // 交换元素位置
            if (left < right)
                Swap(arr, left, right);
        }

        return left;
    }

    // 交换元素位置
    public static void Swap(int[] arr, int i, int j)
    {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    // 测试代码
    static void Main(string[] args)
    {
        int[] arr = { 5, 3, 8, 4, 2, 9, 1, 6, 7 };
        Console.WriteLine("原始数组:");
        for (int i = 0; i < arr.Length; i++)
            Console.Write(arr[i] + " ");
        Console.WriteLine();

        Sort(arr, 0, arr.Length - 1);
        
        Console.WriteLine("排序后的数组:");
        for (int i = 0; i < arr.Length; i++)
            Console.Write(arr[i] + " ");
        Console.WriteLine();
    }
}
  1. Exemple de résultats d'exécution
    Dans le code ci-dessus, nous avons utilisé un programme de test pour trier rapidement le tableau et l'imprimer. résultats.

Les résultats d'exécution sont les suivants :

原始数组:
5 3 8 4 2 9 1 6 7
排序后的数组:
1 2 3 4 5 6 7 8 9

Comme vous pouvez le voir dans l'exemple ci-dessus, utiliser C# pour écrire un algorithme de tri rapide est une méthode relativement simple et efficace qui peut nous aider à trier rapidement les tableaux. Vous pouvez modifier et développer davantage le code ci-dessus en fonction de vos propres besoins pour vous adapter aux différents besoins de tri.

Résumé
Cet article explique comment utiliser C# pour écrire l'algorithme de tri rapide et donne des exemples de code correspondants. Le tri rapide est un algorithme de tri efficace avec de bonnes performances, facile à comprendre et à mettre en œuvre, et peut être largement utilisé dans le développement réel. J'espère que cet article sera utile à tout le monde lors de l'apprentissage et de l'utilisation du langage de programmation C#.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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