×

Sắp xếp mảng số nguyên bằng thuật toán Quick Sort trong C#

Để viết thuật toán Quick Sort để sắp xếp một mảng số nguyên trong C#, bạn có thể làm theo các bước sau. Quick Sort là một thuật toán sắp xếp phân hoạch, chọn một phần tử làm chốt (pivot), sau đó sắp xếp các phần tử sao cho các phần tử nhỏ hơn chốt nằm bên trái và các phần tử lớn hơn chốt nằm bên phải. Tiếp tục áp dụng đệ quy cho các mảng con.

Dưới đây là mã nguồn C# cho thuật toán Quick Sort:

using System;

class QuickSortExample
{
    // Hàm chính để sắp xếp mảng bằng Quick Sort
    public static void QuickSort(int[] array, int low, int high)
    {
        if (low < high)
        {
            int pi = Partition(array, low, high);
            QuickSort(array, low, pi - 1);  // Sắp xếp phần bên trái của chốt
            QuickSort(array, pi + 1, high); // Sắp xếp phần bên phải của chốt
        }
    }

    // Hàm để phân hoạch mảng và chọn chốt
    private static int Partition(int[] array, int low, int high)
    {
        int pivot = array[high]; // Chọn phần tử cuối cùng làm chốt
        int i = (low - 1); // Chỉ số của phần tử nhỏ hơn

        for (int j = low; j < high; j++)
        {
            if (array[j] <= pivot)
            {
                i++;
                Swap(array, i, j);
            }
        }

        Swap(array, i + 1, high);
        return i + 1;
    }

    // Hàm để hoán đổi hai phần tử trong mảng
    private static void Swap(int[] array, int a, int b)
    {
        int temp = array[a];
        array[a] = array[b];
        array[b] = temp;
    }

    static void Main(string[] args)
    {
        int[] array = { 38, 27, 43, 3, 9, 82, 10 };
        Console.WriteLine("Mảng trước khi sắp xếp: " + string.Join(", ", array));

        QuickSort(array, 0, array.Length - 1);

        Console.WriteLine("Mảng sau khi sắp xếp: " + string.Join(", ", array));
    }
}

Giải thích:

  1. QuickSort Method: Hàm này là phần chính của thuật toán Quick Sort. Nó kiểm tra nếu chỉ số low nhỏ hơn high, nghĩa là có ít nhất hai phần tử cần sắp xếp. Sau đó, nó gọi hàm Partition để phân hoạch mảng và tiếp tục gọi đệ quy QuickSort cho các phần bên trái và bên phải của chốt.

  2. Partition Method: Hàm này chọn phần tử cuối cùng làm chốt và sắp xếp các phần tử sao cho tất cả các phần tử nhỏ hơn chốt nằm bên trái và các phần tử lớn hơn chốt nằm bên phải. Cuối cùng, nó hoán đổi chốt vào vị trí đúng và trả về chỉ số của chốt.

  3. Swap Method: Hàm này hoán đổi hai phần tử trong mảng.

  4. Main Method: Đây là điểm bắt đầu của chương trình. Nó khởi tạo một mảng, in ra mảng trước và sau khi sắp xếp bằng Quick Sort.

Chạy chương trình sẽ in ra mảng trước và sau khi sắp xếp để bạn có thể thấy kết quả của thuật toán Quick Sort.

Comments