XROCK: 你要先搞懂快排的原理丫==
快速排序是二元搜寻树(二元搜寻树)的一个空间最佳化版本。不是循序地把资料项插入到一个明确的树中,而是由快速排序组织这些资料项到一个由递回呼叫所隐含的树中。这两个算法完全地产生相同的比较次数,但是顺序不同。对于排序算法的稳定性指标,原地分割版本的快速排序算法是不稳定的。其他变种是可以通过牺牲效能和空间来维护稳定性的。
快速排序的最直接竞争者是堆积排序(Heapsort)。堆积排序通常比快速排序稍微慢,但是最坏情况的执行时间总是{\displaystyle O(n\log n)}{\displaystyle O(n\log n)}。快速排序是经常比较快,除了introsort变化版本外,仍然有最坏情况效能的机会。如果事先知道堆积排序将会是需要使用的,那么直接地使用堆积排序比等待introsort再切换到它还要快。堆积排序也拥有重要的特点,仅使用固定额外的空间(堆积排序是原地排序),而即使是最佳的快速排序变化版本也需要{\displaystyle \Theta (\log n)}{\displaystyle \Theta (\log
n)}的空间。然而,堆积排序需要有效率的随机存取才能变成可行。