开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 16003|回复: 72
收起左侧

[易语言纯源码] [星]排序框架 简单/通用/类型安全/高效 面向对象/面向组件

[复制链接]
发表于 2017-9-9 17:48:21 | 显示全部楼层 |阅读模式   广东省广州市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 m199312 于 2017-9-10 00:58 编辑

简介
*框架是一个简单/通用/类型安全/高效的依照面向对象/面向组件的设计模型开发的符合高内聚/低耦合思想的排序框架。
* 强调框架二字主要是用于区分以前的易语言排序算法模块,它们通常是强调算法忽略排序业务逻辑,通常写死数据类型/写死排序规则,或者通过使用子程序指针的方式以弱类型安全/弱线程安全的形式艰难的实现业务逻辑拆分,代码维护和扩展犹如重写。而本框架参照的Java的排序框架并结合易语言实情进行开发,功能上不仅毫无损失还拓展了排序算法和排序器业务分离,仅仅是在自定义数据类型的排序器上由于易语言语法上的先天不足需要稍微多拷贝几行代码,而在此框架之前易语言的普通排序算法模块是完全无法和主流语言相提并论的。总之,框架是否牛逼用会的人都会和以前的强调算法而忽略排序逻辑的算法模块说拜拜。
组件
* 本框架定义了两种为排序提供服务的组件:“排序器”组件和“排序算法”组件,并已为他们实现了合理的基本结构和两者之间的交互模型开发者可自行选择合适的排序器满意的排序算法为其提供排序服务。
排序器
* 本框架内部已实现多个基本数据类型的排序器 组件包括:整数\小数\文本\字节集\日期时间等排序器,对于自定义数据类型,开发者通过继承“抽象排序器”类,并实现5个简单的抽象方法(子类重写“抽象排序器”类中以“抽象_”开头的方法),提供数组成员的比较及值覆盖业务逻辑即可轻松实现任意类型的排序器
排序算法
* 本框架内部已实现了两个高效的排序算法组件:快速排序算法(递归实现虽然高效但大数据可能堆栈溢出)和希尔排序算法(效率稍低,但无堆栈溢出风险),开发者也可以通过继承“抽象排序算法”类,并实现2个简单的抽象方法(子类重写“抽象排序算法”类中以“抽象_”开头的方法),即可加入本排序框架为任意数据类型提供排序服务(比如实现汇编版xx排序算法,虽然个人不建议使用内联汇编)。
面向组件
* 得益于面向组件思想,基于本框架标准的排序器组件可以和任何基于本框架标准的排序算法组件结合使用,在开发基于本框架标准的排序器组件时无需考虑将来会使用哪种算法为用户提供服务(反正任何算法都可以);反之,开发基于本框架标准的排序算法组件时也无需考虑将来会排序哪数据类型(反正可以排序任何数据类型)。
注意事项
排序器需要的额外实现
* 由于没有泛型和参数拓展等原因,“抽象排序器”无法制定排序器.排序()/排序器.比较()等方法的模板,这些方法均需要由实现类自己参照框架内已实现的排序方法自己重新写相应的方法。
内联汇编和直接内存读写建议
* 由于易语言本身的限制,本框架有部分操作用到了内联汇编和直接内存读写,但被都控制在极小范围内,为实现这些操作的而提供的方法除了参照已有的代码模板可小范围使用外不建议经常使用内联汇编和直接读写内存(包括使用子程序指针),最大可能确保程序健壮。
开闭原则建议
* 因为排序算法对象一般不需要存储数据,所以通常都是线程安全的,按照开闭原则建议为排序算法类公开一个单例的全局对象,并私有化算法类以限制被他人修改的可能(框架模块内部实现的排序算法均已如此处理)。
下载
星排序框架.zip (27.56 KB, 下载次数: 684)

点评

能不能添加去重复   浙江省台州市  发表于 2017-9-10 01:09

评分

参与人数 8好评 +7 精币 +29 收起 理由
空竹 + 3 支持开源~!感谢分享
司徒西 + 1 + 2 支持开源~!感谢分享
宇智波·晓易 + 1 + 4 感谢分享,很给力!~
1051496412 + 1 + 3 支持开源~!感谢分享
MrSimple + 1 + 2 支持开源~!感谢分享
大飛 + 1 + 8 奉上小小红包希望笑纳
冰点 + 1 + 5 支持开源~!感谢分享
汉族 + 1 + 2 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

结帖率:33% (2/6)

签到天数: 17 天

发表于 2024-9-2 10:42:31 | 显示全部楼层   广东省湛江市

下载学习一下
回复 支持 反对

使用道具 举报

结帖率:71% (10/14)

签到天数: 21 天

发表于 2023-11-24 02:46:51 | 显示全部楼层   安徽省*
66666666666666666
回复 支持 反对

使用道具 举报

结帖率:0% (0/4)

签到天数: 14 天

发表于 2023-9-15 23:23:19 | 显示全部楼层   江苏省无锡市
666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 13 天

发表于 2022-8-12 17:58:45 | 显示全部楼层   山东省潍坊市
源码Demo(请自行引
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 6 天

发表于 2022-1-22 23:10:35 | 显示全部楼层   河北省保定市
66666666666666666
回复 支持 反对

使用道具 举报

签到天数: 12 天

发表于 2019-5-6 14:00:40 | 显示全部楼层   广东省东莞市
下载收藏,谢谢分享,先看看
回复 支持 反对

使用道具 举报

发表于 2019-2-21 08:16:04 | 显示全部楼层   四川省南充市
好东西,顶了
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)
发表于 2018-10-12 12:58:30 | 显示全部楼层   浙江省杭州市
学习了,谢谢分享
回复 支持 反对

使用道具 举报

签到天数: 14 天

发表于 2018-9-3 11:13:06 | 显示全部楼层   河南省周口市
下载学习一下
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2018-8-30 10:36:46 | 显示全部楼层   重庆市重庆市
感觉有用插个眼
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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