看流星社区

 找回密码
 注册账号
查看: 2331|回复: 3

[易语言源码] 易语言通用排序模块开源(适用于各种数据类型,方便高效)

[复制链接]

该用户从未签到

发表于 2015-6-30 09:38:41 | 显示全部楼层 |阅读模式
易语言通用排序模块开源(适用于各种数据类型,方便高效)
本次将分享一个排序算法:希尔排序算法(英文名ShellSort)。
由吴涛提供C++实现代码,后经本人整理而成。
模块源码由易代码及汇编代码组合而成,综合稳定与高效于一身。

    之所以选用希尔算法,而且不是其他的算法,原因很简单。我曾尝试过冒泡、二分、插入、快速、基数、堆、计数等多种排序算法,数据量小的情况下都没太大区别,而在数据量大的时候,速度最快的是计数排序算法,其次是希尔排序算法和基数排序算法,而计数排序算法在数据量大的情况效率是常见的冒泡算法的无限倍,是插入排序算法的数千倍,是基数与希尔算法的十多倍,但是计数算法的局限性很大,主要表现在它只能给正整数数组排序,其他数据类型它都无法排序,而且必须事先知道可能出现的最大值,所以没有采用。

    快速排序算法据说效率高,但目前本人只到找递归的写法,这种写法在数据量大的时候将会导致堆栈溢出,从而程序崩溃,所以没办法进行大数据量的测试,效率无从得知。

    与希尔算法效率相当的基数算法,由于它的实现方法麻烦,也没有采用,最终采用的是吴涛推荐的希尔算法,实现简单且效率高,他本人许多年来一直使用的都是此算法,所以现在分享给大家。

    考虑到一些新人及不擅长算法的人,如果单纯分享算法的话,许多人将不知道如何移植到自己的程序中,所以本人将它封装成一个通用的模块,从而就算是新人也可以方便快捷地使用到高效的排序算法,且适用于任何场合,包括文本、时间 甚至是自定义数据类型。

    模块是完全开源的,包括汇编部分下面也附有原汇编代码。压缩包中 包含 模块、模块源码、使用演示。

    注意:一些人在测试的时候,看到排序结果显示 11比9小,以为是算法有问题,其实类似于这样的是正确的,因为你看到的是文本排序,演示中数字排序及数字文本排序中11才会比9大。

游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

发表于 2015-7-5 16:19:03 | 显示全部楼层
看看......................

该用户从未签到

发表于 2016-1-2 11:13:13 | 显示全部楼层
看看怎么样

该用户从未签到

发表于 2019-4-28 15:00:23 | 显示全部楼层
文件夹改变监控源码
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 09:33

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表