C#实现快速排序算法
以下是C#中的快速排序算法实现示例:
using System;
class QuickSort
{
// 快速排序入口函数
public static void Sort(int[] array)
{
QuickSortRecursive(array, 0, array.Length - 1);
}
// 递归函数实现快速排序
private static void QuickSortRecursive(int[] array, int left, int right)
{
if (left < right)
{
int pivotIndex = Partition(array, left, right);
QuickSortRecursive(array, left, pivotIndex - 1);
QuickSortRecursive(array, pivotIndex + 1, right);
}
}
// 划分函数
private static int Partition(int[] array, int left, int right)
{
int pivot = array[right];
int i = left - 1;
for (int j = left; j < right; j++)
{
if (array[j] < pivot)
{
i++;
Swap(array, i, j);
}
}
Swap(array, i + 1, right);
return i + 1;
}
// 交换数组中的两个元素
private static void Swap(int[] array, int i, int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
// 打印数组元素
public static void PrintArray(int[] array)
{
foreach (var item in array)
{
Console.Write(item + " ");
}
Console.WriteLine();
}
// 测试示例
static void Main(string[] args)
{
int[] array = { 12, 4, 7, 2, 10, 1, 15, 3, 6, 11 };
Console.WriteLine("Original array:");
PrintArray(array);
Sort(array);
Console.WriteLine("Sorted array:");
PrintArray(array);
}
}
这段代码实现了快速排序算法。在 Sort
函数中,我们首先调用 QuickSortRecursive
函数来递归地执行快速排序。QuickSortRecursive
函数中,我们首先选择一个基准元素(这里选择数组的最后一个元素作为基准),然后根据基准元素将数组分为两部分,左侧部分小于基准,右侧部分大于等于基准。然后再分别对左右两部分递归执行快速排序。
Partition
函数负责实现划分步骤,它遍历数组,将小于基准的元素放在左侧,大于等于基准的元素放在右侧,并返回基准的最终位置。
Swap
函数用于交换数组中的两个元素。
PrintArray
函数用于打印数组元素。
在 Main
函数中,我们创建一个示例数组,并调用 Sort
函数对其进行排序,然后打印排序后的结果。