Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis algoritma isihan pantas menggunakan C#

Bagaimana untuk menulis algoritma isihan pantas menggunakan C#

王林
王林asal
2023-09-19 15:28:41507semak imbas

Bagaimana untuk menulis algoritma isihan pantas menggunakan C#

Cara menggunakan C# untuk menulis algoritma isihan pantas

Algoritma isihan pantas ialah algoritma isihan yang cekap Ideanya adalah untuk membahagikan tatasusunan kepada sub-masalah yang lebih kecil melalui idea membahagi dan menakluki. dan kemudian selesaikan sub-masalah ini secara rekursif Akhir sekali, gabungkan mereka untuk mendapatkan jawapan kepada keseluruhan masalah.

Di bawah ini kami akan memperkenalkan secara terperinci cara menulis algoritma isihan pantas menggunakan C# dan memberikan contoh kod yang berkaitan.

  1. Idea algoritma
    Idea isihan pantas boleh diringkaskan kepada tiga langkah berikut:
  2. Pilih elemen penanda aras, biasanya elemen pertama tatasusunan
  3. Letakkan elemen dalam tatasusunan yang lebih kecil daripada elemen penanda aras di sebelah kiri elemen penanda aras , letakkan elemen yang lebih besar daripada elemen asas di sebelah kanan elemen asas
  4. Lakukan pengisihan pantas rekursif pada subarray masing-masing di sebelah kiri dan kanan elemen asas.
  5. Pelaksanaan khusus
    Berikut ialah kod pelaksanaan khusus algoritma isihan pantas yang ditulis dalam 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. Contoh hasil larian
    Dalam kod di atas, kami menggunakan program ujian untuk mengisih tatasusunan dan mencetaknya dengan pantas Isih keputusan.

Hasil larian adalah seperti berikut:

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

Seperti yang anda lihat daripada contoh di atas, menggunakan C# untuk menulis algoritma isihan pantas ialah kaedah yang agak mudah dan cekap yang boleh membantu kami menyusun tatasusunan dengan cepat. Anda boleh mengubah suai dan mengembangkan lagi kod di atas mengikut keperluan anda sendiri untuk menyesuaikan diri dengan keperluan pengisihan yang berbeza.

Ringkasan
Artikel ini memperkenalkan cara menggunakan C# untuk menulis algoritma isihan pantas dan memberikan contoh kod yang sepadan. Isih cepat ialah algoritma pengisihan yang cekap dengan prestasi yang baik, mudah difahami dan dilaksanakan, serta boleh digunakan secara meluas dalam pembangunan sebenar. Saya harap artikel ini akan membantu semua orang apabila belajar dan menggunakan bahasa pengaturcaraan C#.

Atas ialah kandungan terperinci Bagaimana untuk menulis algoritma isihan pantas menggunakan C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn