快速排序法(Quick Sort)是目前为止最优的排序算法。它能够在最坏情况下运行时间复杂度也只有O(nlog n) ,因此它比其他排序算法要快得多。这意味着它在同样输入大小的情况下,会比其他算法运行得更快,并且用更少的处理力来完成任务。
#include <stdio.h>
int main()
{
int array[20], n, c, d, swap;
printf("Enter number of elements\n");
scanf("%d", &n);
printf("Enter %d integers\n", n);
for (c = 0; c < n; c++)
scanf("%d", &array[c]);
for (c = 0 ; c < ( n - 1 ); c++)
{
for (d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
printf("Sorted list in ascending order:\n");
for ( c = 0 ; c < n ; c++ )
printf("%d\n", array[c]);
return 0;
}
快速排序法的实现原理
快速排序法是一种分治算法。它的基本步骤如下:
在数组中选择一个元素当做一个基准点 (pivot)
把数组中小于基准点的元素移动到基准点之前,大于基准点元素移动到基准点之后
对左右子数组分别重复这些步骤,直到所有数组都有序为止
|