快速排序主要是利用一个临时存储空间存储一个支点,以支点作为比较标准,大小两个序列分在支点的两边。然后递归两个序列。
/// <summary>
/// 快速排序
/// </summary>
/// <param name="Myarray">数组</param>
/// <param name="low">低位</param>
/// <param name="high">高位</param>
/// <returns></returns>
private int[] QuickSort(int[] Myarray, int low, int high)
{
int i = low;
int j = high;
int tmp = Myarray[low];
while (low < high)
{
//支点与高位的值比较
while((low<high) && (Myarray[high]>=tmp))
{
--high;
}
//在low小于high的条件下,替换低位的值
if (low < high)
{
Myarray[low] = Myarray[high];
low++;
}
while((low<high)&&(Myarray [low]<=tmp))
{
++low;
}
if (low < high)
{
Myarray[high] = Myarray[low];
--high;
}
}
Myarray[low] = tmp;
if (i < low - 1)
QuickSort(Myarray, i, low - 1);
if(j>low+1)
QuickSort (Myarray ,low+1,j);
return Myarray;
}