快速排序(Quicksort)

  快速排序:是对冒泡排序的一种改进。

  什么是冒泡排序:简单一点就是冒气泡。极值数据会到达数据的顶端。

  实现步骤:建立一个数据排列标准,从大到小还是从小到大。

      【从大到小排列】:从第一个数据开始遍历,比较相邻两个数据的大小,大的放前面,小的放后面。遍历一遍以后最小的就到了最后面了。

                然后继续,遍历第二遍,第二小的就到了倒数第2个了。

                以此类推。。。。

      【从小到大排列】:从第一个数据开始,比较相邻两个数据的大小,小的放前面,大的放后面。依此。

  N个元素排列,需要遍历N-1次。也就是数组最大的下标。每一次比较依次递减。为N-1 到 0.不难算出对于N个元素的冒泡排序运算次数。

  

  快速排序的原理:将数据无穷按整体大小细分。

  对于N个元素来说。

  举个例子:100个人随机的在操场上玩耍,老师说:咱们来排个队,从矮到高,听我指挥。你们先排成一列,不管高矮。

  好,拍成一列了。老师说:比第一个人高的全部占到左边一列。这时排好了。

  然后老师又说:现在大家都看到了吧。你们现在是两列了。现在开始,我说一个标准,你们按照标准来。

  即:比一列的第一个人矮的重新在左边开一列,其他人不动。相同身高的,到新的一列去(或者不动),直到最后大家排成一排。

  

  从一列变为一行,如果单纯采用冒泡排序的话,付出的空间代价是什么?需要用到一个Temp空间来作为数据交换。但是对于快速排序来说,需要的空间显然不是申请一个变量就能解决的问题。由于快速排序用到了递归的思想,具体的空间需要计算了。

原文地址:https://www.cnblogs.com/ply616/p/4430427.html