using System;
namespace Recursion
{
class Program
{
static void Main(string[] args)
{
int[] arr = { 9,8, 7 ,6, 5, 4, 3, 2, 1 };
int[] a1 = { 1,2, 6, 5, 4, 3 };
QuickSort(a1, 0, a1.Length-1);
Console.WriteLine(string.Join(",", a1));
}
}
/// <summary>
/// 快速排序获取分区点
/// </summary>
public static int Partition(int[]array,int left,int right)
{
var pivot = right;
var cursor = left;
while (left<=right)
{
if (array[left] <= array[ pivot])
{
var temp= array[cursor];
array[cursor] = array[left];
array[left] = temp;
left++;//比对数据位置
cursor++;//存放数据位置
}
else
{
left++;
}
}
return cursor-1;//当前对枢轴
}
private static void QuickSort(int[] arr, int left, int right)
{
if (left < right)
{
int i = Partition(arr, left, right);
//if (i <=0 || i > arr.Length - 1) return;
//对枢轴的左边部分进行排序
QuickSort(arr, left, i-1);
//对枢轴的右边部分进行排序
QuickSort(arr, i+1, right);
}
}