快速排序算法是对冒泡排序算法的一种改进算法,在当前所有内部排序算法中,快速排序算法被认为是最好的排序算法之一。
快速排序的基本思想:通过一趟排序将待排序的序列分割为左右两个子序列,左边的子序列中所有的数据都比右边子序列中的数据小,然后对左右两个子序列继续进行排序,直至整个序列有序。
算法步骤
- 从数列中选出一个元素,作为“基准”(pivot);
- 重新排序数列,所有比基准值小的元素放在基准值前,所有比基准值大的元素放在基准值的后面(相等的数可以放到任意一边)。在这个分区完成之后,该基准就处于数列的中间位置,这个称为分区操作;
- 递归地把小于基准值元素的子数列和大于基准值的子数列排序;
动图演示
代码实现
1 | template <typename T> |