快速排序的方法逻辑
1.找出一个基准值,并且确定一个范围
2.将该范围的值比基准值小的放左边,比基准值大的放右边
3.重复1,2的操作,可以实现排序效果。
代码流程展示
因为在代码中基准值需要参数到比较中,所以会有基准值和最右边的值交换的过程,
快速排序的代码
public static void KuaiSu(int[] a)
{
KuaiSu1(a,0,a.Length-1);
foreach (int i in a)
{
Console.WriteLine("快速" + i);
}
}
//递归方法,依次往下分组
public static void KuaiSu1(int[] a,int low,int height)
{
if (low > height)
return;
int value = a[low];
int start = low+1; //加1是因为不把他加入循环判断中,循环判断以后再做交换。
int end = height;
int ChangeValue = 0;
while (start!=end)
{
while(start < end && a[start]<=value)
{
start++;
}
while(start < end && a[end]>value)
{
end--;
}
if (start < end)
{
ChangeValue = a[start];
a[start] = a[end];
a[end] = ChangeValue;
}
}
//此处把最左边的值加入排序中。
if (value > a[start])
{
a[low] = a[start];
a[start] = value;
}
if (low < end - 1)
{
KuaiSu1(a, low, end - 1);
}
if (end < height)
{
KuaiSu1(a, end, height);
}
}