逍遥公子 发表于 2015-6-30 09:38:41

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

易语言通用排序模块开源(适用于各种数据类型,方便高效)
本次将分享一个排序算法:希尔排序算法(英文名ShellSort)。
由吴涛提供C++实现代码,后经本人整理而成。
模块源码由易代码及汇编代码组合而成,综合稳定与高效于一身。

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

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

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

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

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

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

**** Hidden Message *****

583986726 发表于 2015-7-5 16:19:03

看看......................

lidejun729 发表于 2016-1-2 11:13:13

看看怎么样

ddreteewrtt 发表于 2019-4-28 15:00:23

文件夹改变监控源码
页: [1]
查看完整版本: 易语言通用排序模块开源(适用于各种数据类型,方便高效)