引言:
最近一直在接触算法有关的东西,数据结构中有讲到,老师也经常讲,但对于快速排序的理解一直不是很好,昨天从图书馆借了一本《啊哈!算法》,看了里面的讲解,这才理解,下面进行一下总结。
简介:
之所以称为快速排序,是因相对于其他排序来说效率高,速度快,主要是采用了"二分"的思想,跟着我来体会一下吧。
过程:
在快速排序过程中,需要随便找一个"基准数"(相当于一个参考)。
将下列数进行从小到大排序:6、1、2、7、9、3、4、5、10、8
一、 方面起见,取第一个数为基准数也就是6,我们将比基准数大的放到6右边,比基准数小的放到6左边。
1、小i和小j作为"探测员"分别从左右两边寻找比6大和比6小的数,因为基准数6在左边,所以小j先开始走,走到5停了下来,小i开始走,走到7停了下来,进行交换数据。
2、继续探测,小j往前走到4停了下来,小i往前走到9停了下来,再次进行交换。
3、继续探测,小j往前走到3停下,小i往前走碰到了小j,哇,缘分啊,终于相遇了,站在3的位置握手拥抱,那探测的工作就结束了。3和基准数6互换位置。
得到了比基准数小的在基准数左边,比基准数大的在基准数右边。
第一论探测结束!
二、第二轮开始
基准数6左边再次进行探测。
1、以3为基准数,进行一轮探测
2、基准数3的左右再次进行得到
现在的排序为:
三、第三轮开始
基准数6右边再次进行探测。
得到最后的结果:
总结: