本帖最后由 tang_ge 于 2021-8-28 10:32 编辑
由于是临时写的代码没有用 Drea 的开发模板,但本贴注重的是其算法。
之前开发群里有人再写QQ发言榜时遇到了如何排序的问题,今天刚好有点空便写了一下发言排序。
窗体样式(左:超级列表框1,右:超级列表框2):
此处使用插入随机数据来代替发言的QQ和次数,实际应用需要直接使用真实的发言数据。
算法需要用到名为 QQ发言榜 的自定义数据类型
代码中的注释已对脚本做出简单解释
效果:
*如果没有看到图片可以刷新一下
附上源码:
- .版本 2
- .支持库 iext
- .子程序 _按钮2_被单击
- .局部变量 发言榜, QQ发言榜, , "0"
- .局部变量 temp1, QQ发言榜
- .局部变量 temp2, QQ发言榜
- .局部变量 i_1, 整数型
- .局部变量 i_2, 整数型
- .局部变量 i_3
- .局部变量 引索, 整数型
- ‘内容由 tang_ge 独创,未经允许,请勿转载至其它平台
- .计次循环首 (超级列表框1.取表项数 (), i_1)
- temp1.QQ = 超级列表框1.取标题 (i_1 - 1, 0)
- temp1.次数 = 到整数 (超级列表框1.取标题 (i_1 - 1, 1))
- 插入成员 (发言榜, 取数组成员数 (发言榜) + 1, temp1)
- .计次循环尾 ()
- .计次循环首 (取数组成员数 (发言榜) - 1, )
- .计次循环首 (取数组成员数 (发言榜) - 1, i_2)
- .如果真 (发言榜 [i_2].次数 < 发言榜 [i_2 + 1].次数)
- temp2 = 发言榜 [i_2 + 1]
- 发言榜 [i_2 + 1] = 发言榜 [i_2]
- 发言榜 [i_2] = temp2
- .如果真结束
- .计次循环尾 ()
- .计次循环尾 ()
- .计次循环首 (取数组成员数 (发言榜), i_3)
- 引索 = 超级列表框2.插入表项 (, , , , , )
- 超级列表框2.置标题 (引索, 0, 发言榜 [i_3].QQ)
- 超级列表框2.置标题 (引索, 1, 到文本 (发言榜 [i_3].次数))
- .计次循环尾 ()
- .版本 2
- .数据类型 QQ发言榜
- .成员 QQ, 文本型
- .成员 次数, 整数型
复制代码
|