算法描述
快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立的排序。
快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序;而快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了。在归并排序中,一个数组被等分为两半;在快速排序中,切分(partition)的位置取决于数组的内容。
特点
它是原地排序(只需要一个很小的辅助栈),且将长度N的数组排序的所需的时间和NlogN成正比。其他排序算法都无法将这两个优点结合起来。
快速排序的内循环比大多数的排序算法都要短小,意味着无论是理论上还是实际上都要更快。
缺点是非常脆弱,实现时要非常小心以避免低劣的性能。
