Để 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:
-
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ơnhigh
, nghĩa là có ít nhất hai phần tử cần sắp xếp. Sau đó, nó gọi hàmPartition
để phân hoạch mảng và tiếp tục gọi đệ quyQuickSort
cho các phần bên trái và bên phải của chốt. -
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.
-
Swap Method: Hàm này hoán đổi hai phần tử trong mảng.
-
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