1、快速排序是从冒泡排序演变而来的算法,但是比冒泡排序要高效得多,所以叫快速排序。
2、快速排序之所以快速,是因为使用了分治法。
3、同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。
4、快速排序算法的平均时间复杂度是 O(nlogn)。
5、基准元素,英文pivot,用于在分治过程中以此为中心,把其他元素移动到基准元素的左右两边。
6、基准元素的选择:最简单的方式是选择数列的第一个元素
7、选定了基准元素以后,我们要做的就是把其他元素当中小于基准元素的都移动到基准元素一边,大于基准元素的都移动到基准元素另一边。
8、具体实现有两种方法:①挖坑法 ②指针交换法
以上内容转载了
http://www.sohu.com/a/246785807_684445 这里描述得非常清楚!
那么我在这里简单粗暴地描述下我所理解的指针交换法:
1、每次循环从right指针开始,
2、如果right指针所指向的数大于等于基准元素,则right指针向左移动,如果小于基准元素,则right指针停止移动,主动权转到left指针。(只有当right指针停止移动才把主动权转给left指针)
3、如果left指针所指向的数小于等于基准元素,则left指针向右移动,如果大于基准元素,则left指针停止移动。
4、当right指针和left指针都停止移动时,交换两个的指针所指的数。交换后新的一轮循环又开始了啦。