快速排序的基本思想:通过将一趟排序将待排记录分割成两部分,其中一部分均比记录的关键字小,另一部分则均比关键字大,然后再分别对这两部分继续排序。以达到整个序列有序。利用递归算法的思想,将大规模转化成小规模问题。
平均时间复杂度为:O(nlog2n),序列基本有序的情况为最坏情况其时间复杂度为O(n²),空间复杂度为:O(nlog2n),不稳定。
实现过程:
实现的第一趟如图,完成第一趟后,然后分别对{24,23,10,35,28}和{90,89}两部分分别进行排序。
算法:
Code
private static void QuickSort(int[] data,int low,int high)
{
int i, j,pivotKey;
if (low < high)
{
pivotKey = data[low];
i = low;
j = high;
while (i < j)
{
while (i < j && data[j] >= pivotKey)
{
j--;
}
if (i < j)
{
data[i] = data[j];
i++;
}
while (i < j && data[i] <= pivotKey)
{
i++;
}
if (i < j)
{
data[j] = data[i];
j--;
}
}
data[i] = pivotKey;
QuickSort(data, low, i - 1);
QuickSort(data, i + 1, high);
}/*if*/
}