觅风论坛

标题: 易语言实现框架排序器举例,自定义数据的快速排序源码 [打印本页]

作者: 小一    时间: 2023-12-26 09:48
标题: 易语言实现框架排序器举例,自定义数据的快速排序源码
底层算法都已经写好了,基本数据类型的排序器也有了,缺少一个自定义数据类型,
由于我没有骚操作,教大家如何老老实实对【自定义数据】进行排序。

1、私有成员的类型
2、重构你的【比较】函数,我这里举了个例子,是先对参数二排序,再对参数三排序。
  1. .版本 2

  2. .程序集 排序器_自定义数据, 抽象排序器, , 一定得填上基类
  3. .程序集变量 m_data, 自定义数据, , "0"
  4. .程序集变量 m_save, 自定义数据

  5. .子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用



  6. .子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用



  7. .子程序 排序, , 公开
  8. .参数 p_排序算法实现, 抽象排序算法, 参考, 本参数要求提供"抽象排序算法"的实现类
  9. .参数 p_欲排序的数组, 自定义数据, 参考 数组
  10. .参数 p_升序排列, 逻辑型
  11. .局部变量 l_p2int_this, 整数型
  12. .局部变量 l_this, 抽象排序器

  13. l_p2int_this = 指针到整数 (类自身 ())
  14. Exchange (l_p2int_this, l_this, p_欲排序的数组, m_data)
  15. .如果 (p_升序排列)
  16.     p_排序算法实现.p_升序排列 (取数组成员数 (m_data), l_this)
  17. .否则
  18.     p_排序算法实现.p_降序排列 (取数组成员数 (m_data), l_this)
  19. .如果结束
  20. Exchange (l_p2int_this, l_this, p_欲排序的数组, m_data)

  21. .子程序 去重复, , 公开
  22. .参数 p_排序算法实现, 抽象排序算法, 参考, 本参数要求提供"抽象排序算法"的实现类
  23. .参数 p_欲排序的数组, 自定义数据, 参考 数组
  24. .局部变量 l_p2int_this, 整数型
  25. .局部变量 l_this, 抽象排序器

  26. l_p2int_this = 指针到整数 (类自身 ())
  27. Exchange (l_p2int_this, l_this, p_欲排序的数组, m_data)
  28. p_排序算法实现.p_去重复 (取数组成员数 (m_data), l_this)
  29. Exchange (l_p2int_this, l_this, p_欲排序的数组, m_data)

  30. .子程序 比较, 整数型, 公开
  31. .参数 p_data1, 自定义数据
  32. .参数 p_data2, 自定义数据

  33. .判断开始 (p_data1.参数二 > p_data2.参数二 或 p_data1.参数二 = p_data2.参数二 且 p_data1.参数三 > p_data2.参数三)
  34.     返回 (1)
  35. .判断 (p_data1.参数二 = p_data2.参数二 且 p_data1.参数三 = p_data2.参数三)
  36.     返回 (0)
  37. .默认
  38.     返回 (-1)
  39. .判断结束


  40. .子程序 p_比较成员, 整数型, 公开, 已经重写此方法,本方法仅供排序算法自动调用。返回说明:比较值1>比较值2,返回1;比较值1=比较值2,返回0;比较值1<比较值2,返回-1
  41. .参数 被比较的成员下标, 整数型, , 即前一比较值
  42. .参数 作用比较的成员下标, 整数型, , 即后一比较值

  43. 返回 (比较 (m_data [被比较的成员下标], m_data [作用比较的成员下标]))

  44. .子程序 p_交换成员, , 公开, 已经重写此方法,并且子类必须重写此方法,本方法仅供排序算法自动调用。使用说明:本命令用于强制交换对象
  45. .参数 欲交换的成员下标, 整数型
  46. .参数 作交换的成员下标, 整数型

  47. ASM_交换_变量交变量 (m_data [欲交换的成员下标], m_data [作交换的成员下标])

  48. .子程序 p_覆写成员, , 公开, 本命令用于覆写成员
  49. .参数 被覆写的成员, 整数型

  50. m_data [被覆写的成员] = m_save

  51. .子程序 p_临时保存成员, , 公开, 本命令用于保存临时成员
  52. .参数 被保存的成员, 整数型

  53. m_save = m_data [被保存的成员]

  54. .子程序 p_比较临时成员, 整数型, 公开, 本命令用于比较临时成员和其他成员的大小
  55. .参数 欲比较的成员下标, 整数型

  56. 返回 (比较 (m_data [欲比较的成员下标], m_save))

  57. .子程序 p_删除成员, , 公开, 本命令用于去重复中删除成员
  58. .参数 欲删除的成员下标, 整数型

  59. 删除成员 (m_data, 欲删除的成员下标, )
复制代码
  1. .版本 2
  2. .支持库 spec

  3. .局部变量 局_排序器, 排序器_自定义数据
  4. .局部变量 局_数据, 自定义数据, , "0"
  5. .局部变量 i, 整数型
  6. .局部变量 n, 整数型

  7. 置随机数种子 ()
  8. n = 100
  9. 重定义数组 (局_数据, 假, n)
  10. .计次循环首 (n, i)
  11.     局_数据 <i>.参数一 = “数据” + 到文本 (i)
  12.     局_数据 <i>.参数二 = 取随机数 (, ) ÷ 32767
  13.     局_数据 <i>.参数三 = 取随机数 (, )
  14. .计次循环尾 ()

  15. 局_排序器.排序 (快速排序_ASM, 局_数据, 真)  ' 先按参数二排序,再按参数三

  16. 调试输出 (“排序后”)
  17. .计次循环首 (n, i)
  18.     调试输出 (局_数据 <i>.参数一, 局_数据 <i>.参数二, 局_数据 <i>.参数三)
  19. .计次循环尾 ()
复制代码



作者: 光光    时间: 2023-12-26 20:22
谢谢分享好人有好报6666666
作者: 卧槽你妹    时间: 2023-12-27 06:57
阿斯蒂芬撒反对
作者: zzq6689@qq.com    时间: 2023-12-27 17:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: zzq6689@qq.com    时间: 2023-12-28 04:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: 文杰    时间: 2023-12-28 14:40
碉堡了!
作者: 阿运    时间: 2023-12-28 20:12
我知道错了,感谢大神分享
作者: 光光    时间: 2023-12-29 01:44
还不错觅风论坛欢迎你
作者: gwm231    时间: 2023-12-29 07:16
的法国风格化规范化
作者: wz19981007    时间: 2023-12-29 12:48
看看看看看看看看看看看看
作者: 行走的蜗牛    时间: 2023-12-29 18:21
学习中,看看代码啥情况
作者: 无聊玩玩    时间: 2023-12-29 22:58
谢谢分享好人有好报6666666
作者: 1811581892    时间: 2023-12-30 03:36
撒大苏打阿斯顿阿斯顿
作者: 带小叶    时间: 2023-12-30 08:14
学习下  学习下  学习下
作者: 无聊玩玩    时间: 2023-12-30 12:51
必须支持。。。。。。。
作者: 凌空    时间: 2023-12-30 17:29
感觉不错
作者: 斯蒂芬    时间: 2023-12-31 06:14
多上传一点源码
作者: hy507669673    时间: 2023-12-31 18:59
这个资源我一直想要
作者: a491198538    时间: 2024-1-1 07:44
想学唉,可惜现在的我啥都不会
作者: wfagf    时间: 2024-1-1 20:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: a491198538    时间: 2024-1-2 09:14
支持你们一下下哈
作者: 你大爷    时间: 2024-1-2 16:40
觅风论坛需要你
作者: 哈哈哈哈    时间: 2024-1-3 00:07
看看看看看看看看看看看看
作者: 你大爷    时间: 2024-1-3 07:34
支持!!!!!!
作者: tzq78789    时间: 2024-1-3 15:00
还是看不懂,复杂
作者: tzq78789    时间: 2024-1-3 22:27
赞一个!
作者: sxy19931021    时间: 2024-1-4 10:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 卧槽你妹    时间: 2024-1-4 22:23
很给力。。。。很喜欢
作者: 无名使者    时间: 2024-1-5 10:21
还是看不懂,复杂
作者: 霸王喝粥    时间: 2024-1-5 22:19
支持你们一下下哈
作者: tzq78789    时间: 2024-1-6 10:17
支持!!!!前排!!!!
作者: tzq78789    时间: 2024-1-6 20:15
好东西,一定要进行学习
作者: 赵金龙    时间: 2024-1-7 06:13
这就是传说中的好资源吗?赶紧看看去!
作者: fghjgfkjhgk    时间: 2024-1-7 16:11
很给力。。。。很喜欢
作者: 赵金龙    时间: 2024-1-8 02:09
支持你们一下下哈
作者: 企鹅6655    时间: 2024-1-8 12:07
必须支持。。。。。。。
作者: 360403967    时间: 2024-1-8 22:02
来瞧瞧的,呵呵
作者: sxy19931021    时间: 2024-1-9 07:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 360403967    时间: 2024-1-9 17:51
不错不错 支持下
作者: 何海银    时间: 2024-1-10 03:45
不错!顶LZ
作者: qq1423845446    时间: 2024-1-10 13:40
感觉不错
作者: 斯蒂芬    时间: 2024-1-10 18:02
多上传一点源码
作者: 卧槽你妹    时间: 2024-1-10 22:25
谢谢楼主,对了新人问下,这个也要15字吗
作者: qq1124824221    时间: 2024-1-11 02:47
来瞧瞧的,呵呵
作者: 任逍遥    时间: 2024-1-11 07:10
支持!!!!!!
作者: 你大爷    时间: 2024-1-11 11:32
非常不错,感谢分享!
作者: 舞步    时间: 2024-1-11 13:50
666666666666666666666666
作者: haobaba45    时间: 2024-1-11 16:07
来瞧瞧的,呵呵
作者: 微风    时间: 2024-1-11 18:25
人设人阿松大
作者: li123    时间: 2024-1-11 20:42
这个好好支持一下
作者: 骑着蚂蚁兜风    时间: 2024-1-11 23:00
期待中......
作者: luoyunjie    时间: 2024-1-12 02:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: sdf    时间: 2024-1-12 05:55
666学习了!!
作者: 磊磊    时间: 2024-1-12 09:23
谢谢楼主,,,收藏ing
作者: luoyunjie    时间: 2024-1-12 12:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: qq1354596367    时间: 2024-1-12 16:18
不错哦  喜欢 嘿嘿




欢迎光临 觅风论坛 (https://www.eyyba.com/) Powered by Discuz! X3.4