**
快速排序详解
**
前言:快速排序在交换排序中,属于性能特别高的一种排序,很多情况下都是面试必考题,可以了解一下。
我不讲究原理,网上一大堆都可以收到,
只要会用,用一段时间你自然就懂了,
直接上代码:
//快速排序方法
public static void quickSort(int[] arr, int low, int high)
{
// 不满足快排条件,直接返回
if (low >= high)
{
return;
}
// 设置基准值
int temp = arr[low];
// 设置当前递归代码块的排序左坐标,右坐标
int l = low, r = high;
while (l < r)
{
// 左坐标小于右坐标 且 右值arr[r]大于等于基准值 则右坐标r--
while (l < r && arr[r] >= temp)
{
r--;
}
// 翻转
arr[l] = arr[r];
// 左坐标小于右坐标 且 左值arr[l]小于等于基准值 则左坐标l++
while (l < r && arr[l] <= temp)
{
l++;
}
// 翻转
arr[r] = arr[l];
}
// 基准回值(跳出循环时r一定等于l)
arr[l] = temp;
// 递归快排当前基准坐标的左半部分
quickSort(arr,low,l-1);
// 递归快排当前基准坐标的右半部分
quickSort(arr,l + 1, high);
}
//主函数调用
static void Main(string[] args)
{
int[] a = { 20, 30, 50, 10, 60, 40,100,1,5,3,2,-1,38,52,200,132 };
int ilen = a.Length;
Console.WriteLine("before sort:");
for (int i = 0; i < ilen; i++)
Console.Write(a[i] + " ");
Console.WriteLine();
quickSort(a, 0, ilen - 1);
Console.WriteLine("after sort:");
for (int i = 0; i < ilen; i++)
Console.Write(a[i] + " ");
Console.WriteLine();
}
==执行结果
PS:我是青春代码,山高路远,江湖再见。
友情提示:转载请注明出处。