快速排序

来源:互联网 发布:新东方网络英语 编辑:程序博客网 时间:2024/06/07 02:56

快速排序(Quicksort)是对冒泡排序的一种改进,其核心的思想:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

例子如下:

现有下面6个数据,上面是序号,下面是值

序号0 1 2 3 4 5

数据6 2 7 4 1 8

创建变量i=0(指向第一个数据), j=5(指向最后一个数据), k=6(为第一个数据的值)

我们要把所有比k小的数移动到k的左面,所以我们可以开始寻找比k小的数,从j开始,从右往左找,不断递减变量j的值,我们找到第一个序号4的数据比K小,于是把序号4和序号0下面的数据值交换,完成第一次比较:

序号012345

数据127468

此时i=0 j=4 k=6

接着,开始第二次比较,这次要变成找比k大的了,而且要从前往后找了。递加变量i,发现序号2的数据是比k大的,于是把序号2和序号4下面的数据值交换,完成第次比较:

序号012345

数据126478

此时i=2 j=4 k=6

然后,我们可以开始寻找比k小的数,从j开始,从右往左找,不断递减变量j的值,我们找到第一个序号3的数据比K小,于是把序号3和序号2下面的数据值交换,完成第次比较:

序号012345

数据124678

此时i=2j=3 k=6

最后,开始第四次比较,这次要变成找比k大的了,而且要从前往后找了。这时发现i=j=k=6,完成排序。

原创粉丝点击