简介
快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立地排序。
优点:原地排序(只需要一个很小的辅助栈),且将长度为 N 的数组排序所需的时间和 NlogN 成正比;
缺点:非常脆弱,在实现时要非常小心才能避免低劣的性能。
Basic Plan
- Shuffle the array.
- Partition so that, for some
j
- entry
a[j]
is in place - no larger entry to the left of
j
- no smaller entry to the right of
j
- entry
Sort
each piece recursively.
代码
1 | public class Quick { |
Quicksort trace
Quicksort properties
- Quicksort is an in-place sorting algorithm.
- Quicksort is not stable.