c#快排代码
时间: 2023-07-03 07:27:32 浏览: 37
以下是使用C#实现快速排序的代码:
```csharp
using System;
public class QuickSortExample
{
public static void Main()
{
int[] arr = { 9, 7, 5, 11, 12, 2, 14, 3, 10, 6 };
QuickSort(arr, 0, arr.Length - 1);
Console.WriteLine("Sorted array:");
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i] + " ");
}
}
public static void QuickSort(int[] arr, int left, int right)
{
if (left < right)
{
int pivotIndex = Partition(arr, left, right);
QuickSort(arr, left, pivotIndex - 1);
QuickSort(arr, pivotIndex + 1, right);
}
}
public static int Partition(int[] arr, int left, int right)
{
int pivotValue = arr[right];
int i = left - 1;
for (int j = left; j < right; j++)
{
if (arr[j] < pivotValue)
{
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp1 = arr[i + 1];
arr[i + 1] = arr[right];
arr[right] = temp1;
return i + 1;
}
}
```
这个程序使用了递归方法实现快速排序。在主函数中,我们定义了一个整数数组并将其作为参数传递给QuickSort方法。然后我们打印已排序的数组。
在QuickSort方法中,我们首先检查左索引是否小于右索引。如果是,则找到分区索引并递归地调用QuickSort方法对分区的左侧和右侧进行排序。在Partition方法中,我们选择最后一个元素作为枢轴,并将i初始化为left-1。我们遍历数组并将小于枢轴值的元素移动到i的位置。最后,我们交换i + 1和枢轴值的位置,并返回分区索引。