快速排序
快速排序的思想很简单,但其效率却是排序算法中最高的。
背景
本文介绍快速排序,实现升序排列。
基本理论
代码实现:
C#">/// <summary>
/// 快速排序
/// </summary>
/// <param name="Key">待排序数组</param>
/// <param name="left">数组最左端索引</param>
/// <param name="right">数组最右端索引</param>
private void Quick(int[] Key, int left, int right)
{
int current = Key[left];
int i = left;
int j = right;
if (left < right)
{
while (i < j) // 当i=j时,表示i之前的数均比current小,之后的数均比current大,即i是current在正确排序序列中的正确位置
{
while (Key[j] >= current && i < j)
{
j--;
}
while (Key[i] <= current && i < j)
{
i++;
}
if (i < j)
{
int temp = Key[i];
Key[i] = Key[j];
Key[j] = temp;
}
}
Key[left] = Key[i];
Key[i] = current; // 将current放置到正确的位置上
if (left < j - 1)
Quick(Key, left, j - 1);
if (j + 1 < right)
Quick(Key, j + 1, right);
}
}
public void QuickSort(int[] Key)
{
Quick(Key, 0, Key.Length - 1);
}