“快速排序法”的实现
Posted 攀言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“快速排序法”的实现相关的知识,希望对你有一定的参考价值。
大家晚上好,今天向大家介绍一种排序算法。
在所有的排序算法中,最复杂、最难实现的恐怕就是这个“快速排序法”了,那么,“快速排序法”究竟是怎么一回事呢?先根据一张图来说原理:
注意上图中的粉红色数据,也就是最左边的第一个数据,我们选取它作为“分界值”,红色箭头(后面称为“红军”)的初始位置在“分界值”的右边,以索引i指向的位置为准;蓝色箭头(后面称为“蓝军”)的初始位置在数组的最右边;“红军”的任务是向右移动,直到找到一个大于等于“分界值”69的数据就停止前进,“蓝军”的任务是向左移动,直到找到一个小于等于“分界值”69的数据就停止。
接着,先判断蓝军此刻的位置j是否还大于红军的位置i,如果j大于i,那么就将蓝军与红军所指向的数据交换位置,然后两军继续刚才的动作;如果j此时已经不大于i了,说明两军已经重叠或者交叉越位了,则两军的任务完成;
然后,将那个最左边的“分界值”69与蓝军所指向的数据(也就是索引j指向的数据)进行交换。此时,“分界值”69这个数字的位置已经固定了,它的左边全部是小于69的,右边全部是大于69的。
最后,用“递归算法”分别对这个“分界值”左右两边的序列进行排序,排序步骤同上,注意:递归出口是数组的开始索引大于等于结束索引。
好了,看代码吧:
在主方法中调用此方法:
结果为:
好了,至此,“快速排序”算法就讲完了。
各位,加油!
以上是关于“快速排序法”的实现的主要内容,如果未能解决你的问题,请参考以下文章