第一种写法 递归实现 快排中心思想 分治法 一个参考点 可以最右最左中间都可以 看你 下面是最右的写法
取right当基准点point 以及记下来索引 p_index 2个光标left right 来找比基准值 大或者小的交换 如果相遇交换 left和p_index
class Program
{
static void Main(string[] args)
{
int[] arr = new int[] { 44, 30, 20, 70, 2, 3, 4, 5, 15, 15 };
Sort(arr);
foreach (var item in arr)
{
Console.Write(item + ",");
}
}
static void Sort(int[] arr)
{//包装了一层 防止输入left 起始错误应该是0 以及 right 应该是最右面的索引位置应该-1
QuickSort(arr, 0, arr.Length - 1);
}
static void QuickSort(int[] arr, int left, int right)
{
if (left >= right) return;//防止输入错误
int p = Partition(arr, left, right);
//最关键的 相对位置 p 同类问题递归调用自身排序 划分好相对区间即可
QuickSort(arr, left, p - 1);
QuickSort(arr, p + 1, right);
}
static int Partition(int