在C#中,可以使用遞歸方法實現快速排序算法。以下是一個簡單的示例:
using System;
class QuickSortExample
{
static void Main()
{
int[] arr = { 10, 7, 8, 9, 1, 5 };
int n = arr.Length;
QuickSort(arr, 0, n - 1);
Console.WriteLine("Sorted array:");
for (int i = 0; i < n; i++)
Console.Write(arr[i] + " ");
Console.ReadLine();
}
static void QuickSort(int[] arr, int low, int high)
{
if (low < high)
{
int pi = Partition(arr, low, high);
QuickSort(arr, low, pi - 1);
QuickSort(arr, pi + 1, high);
}
}
static int Partition(int[] arr, int low, int high)
{
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++)
{
if (arr[j] < pivot)
{
i++;
// swap arr[i] and arr[j]
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// swap arr[i+1] and arr[high] (or pivot)
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return (i + 1);
}
}
在這個示例中,我們定義了一個名為QuickSort
的方法,它接受一個整數數組、一個低索引和一個高索引作為參數。這個方法將數組劃分為兩個部分,然后遞歸地對這兩個部分進行排序。Partition
方法用于將數組劃分為兩個部分,使得左邊的元素小于樞軸元素,右邊的元素大于樞軸元素。