|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 壩火柴 于 2015-5-24 08:30 编辑
像我这种混迹论坛的大水比,在潜水半年之后又浮出了水面。
代码是自己写的,只是用易语言实现了排序中常用的quicksort算法,大家参考就是了。
呃,最后解释一下代码吧(当然你也可以尝试自己去猜什么意思 =皿= )首先,我们有一个叫“二分”的思想,大概就是说让一个数成为基准数,让它左边都小于它右边都大于它,然后再把左边的序列也找一个基准数,让左边都小于它右边都大于它,右边也这样处理……最后只要每个分块的左边是一个右边是一个(或没有)就排序完毕了。quicksort的做法是,这里以左边第一个数为基准数来举例,先用指针j从右边往左边遍历,找比基准数小的数,j停住,再让指针i从左至右遍历,找到比基准数大的数,然后i和j指向的数组成员交换(请想一想为什么不先用i从左至右遍历,因为如果这样做,如果一直i遍历的数都大于等于基准数的话,就会到最右边与j重合,那么就会按之后的步骤让左一的基准数与右一的不知道什么数调换位置,而实际上我们要达到的效果是如果右二起至最后都大于等于基准数的话直接让基准数不动[其实是自己与自己调换位置]);那么问题来了!挖掘机……当i与j碰面时咋整呢,简单,直接把基准数和i、j碰面的位置交换就是了,这样基准数左边都比它小右边都比它大了(看不懂请找张纸画一画!)。
这就是一个基准数归位的过程。
接下来的步骤就是分别处理其它块,怎么处理?废话,递归呗。
OK讲完了,求大神罩我。
源码回复可见
E_quicksort.rar
(1.22 KB, 下载次数: 25)
|
|