易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

易语言版sort - 纯易语言代码 - 翻译自STL的sort   [复制链接]

    2023-04-18 20:19:19
    高级教程源码
    易语言资源网
    1484 次浏览
    来源链接


和c++的sort相比

在debug模式下, 易语言耗时大概是20秒左右

而c++耗时是4秒左右, 慢了5倍左右

release模式下

易语言耗时大概7秒

c++耗时500毫秒

比c++慢了14倍左右.....

易语言核心库的数组排序耗时600毫秒左右

这个排序的优点就是可以自行扩展, 支持排序自定义数据类型, 需要自己写比较自定义数据类型大小的函数

可以只排序部分成员, 不一定要排序整个数组

想扩展自定义排序的话, 自己写一个类, 继承 sort_base 类

然后重写  size 和 cmp 这两个方法

size方法是单个成员在数组里占用的尺寸

指针加减的时候会根据这个尺寸计算

cmp方法是比较两个成员的大小, 内部的排序算法就是靠这个返回值进行排序的

STL的std::sort函数是基于Musser在1996年提出的内省排序(Introspective sort)算法实现。这个算法是个缝合怪,它汲取了插入排序、堆排序以及快排的优点:



  • 针对大数据量,使用快排,时间复杂度是O(NlogN);
  • 若快排递归深度超过阈值__depth_limit ,改用堆排序,防止快排递归过深,同时保持时间复杂度仍是O(NlogN);
  • 当数据规模小于阈值_S_threshold时,改用插入排序。


点我下载 (已有 22 次下载)

引用模块





引用支持库


源码文件名 支持库文件名 支持库标识
易语言版sort.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:【全网首发】输入法的滑行输入在易语言的实...     下一篇:【易语言助手插件】彩虹流程线...