简介:
快速排序是冒泡排序的改进版本,原理是差不多的,按教科书上定义:冒泡排序和快速排序都属于交换排序类算法。但具体实现思路很巧妙,也与冒泡有很大不同。
大致思想:
先说一个大致思想:快速排序会选择一个数作为“枢轴”,通过重复两个关键操作,最终会使得比“枢轴”小的数全部在枢轴的左边,比枢轴大的数全部在枢轴右边。比如49,38,65,97,76,13,27,若以49作为枢轴,经过第一步交换后:27,38,13,49,76,97,65。再重新选择枢轴,开启新一轮的“两个关键操作”,最终使得数组变得有序。
以一个例子来说明快速排序的过程。
有一组数:
49,38,65,97,76,13,27
第一步:(注:下面说的后表示右端,前表示左端)
①选一个pivotkey(中文译作“枢轴”),一般是选第一个数,这里选49。
②从后往前看,把第一个发现比49小的数与49交换(把原题数组的49和27交换),交换结果:
27,38,65,97,76,13,49
③从前往后看,把第一个发现比49大的数和49交换(把上一步操作得出数组的49和65交换),交换结果:
27,38,49,97,76,13,65
(后面都是重复②③操作)
②从后往前看,把第一个发现比49小的数与49交换(把上一步操作得出数组的49和13交