本帖最后由 笨来无一悟 于 2024-7-23 07:14 编辑
名曰:多条件 实际只按某一个条件排序也是可以的
自行设计 &比较函数 什么条件返回0 什么条件返回1 什么条件返回-1 达到升序或者降序的效果
很简单的 参考示例几分钟就上手了
模块源码 ↓
变量名 | 类 型 | 静态 | 数组 | 备 注 | 数组地址 | 整数型 | | | 成员数量 | 整数型 | | | 跳转地址 | 整数型 | | | 跳转函数 | 字节集 | | |
数组地址 = 0 成员数量 = 0 跳转地址 = 0 跳转函数 = { 85, 137, 229, 83, 255, 117, 8, 255, 117, 12, 255, 21 } + 到字节集 (取变量数据地址 (跳转地址 )) + { 91, 201, 195 }置入代码 ({ 83, 81, 139, 69, 12, 64, 139, 8, 128, 249, 232, 117, 248, 139, 72, 1, 141, 92, 8, 5, 139, 11, 193, 225, 8, 129, 249, 0, 85, 139, 236, 141, 64, 4, 117, 225, 137, 216, 89, 91, 137, 69, 244 })置入代码 ({ 54, 139, 69, 8, 62, 139, 0, 131, 192, 8, 54, 137, 69, 252, 62, 139, 64, 252, 54, 137, 69, 248 })qsort (数组地址, 成员数量, 4, 取变量数据地址 (跳转函数 ))
示例源码 ↓
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 猪圈 | 大肥猪 | 20 |
排序前.行数 = 取数组成员数 (猪圈 ) + 1 排序后.行数 = 取数组成员数 (猪圈 ) + 1 排序前. 置数据 (计次, 0, 1, “姓名”)排序前. 置数据 (计次, 1, 1, “身高”)排序前. 置数据 (计次, 2, 1, “体重”)排序后. 置数据 (计次, 0, 1, “姓名”)排序后. 置数据 (计次, 1, 1, “身高”)排序后. 置数据 (计次, 2, 1, “体重”)计次循环首 (取数组成员数 (猪圈 ), 计次 )猪圈 [计次 ].身高 = 取随机数 (0, 9 )猪圈 [计次 ].体重 = 取随机数 (0, 99 ) ÷ 10 猪圈 [计次 ].姓名 = 选择 (取随机数 (0, 1 ) = 1, “大”, “小”) + 文本_取随机汉字 (2, 0 ) + “猪”排序前. 置数据 (计次, 0, 1, 猪圈 [计次 ].姓名 )排序前. 置数据 (计次, 1, 1, 猪圈 [计次 ].身高 )排序前. 置数据 (计次, 2, 1, 猪圈 [计次 ].体重 )计次循环尾 ()多项排序 (猪圈, &比较 )计次循环首 (取数组成员数 (猪圈 ), 计次 )排序后. 置数据 (计次, 0, 1, 猪圈 [计次 ].姓名 )排序后. 置数据 (计次, 1, 1, 猪圈 [计次 ].身高 )排序后. 置数据 (计次, 2, 1, 猪圈 [计次 ].体重 )计次循环尾 ()判断 (一.身高 > 二.身高 ) 返回 (1 )判断 (一.身高 < 二.身高 ) 返回 (-1 )判断 (一.体重 > 二.体重 ) 返回 (1 )判断 (一.体重 < 二.体重 )返回 (-1 )返回 (0 )
|
文本_取随机汉字 | 文本型 | | |
个数 | 整数型 | | | | 汉字或全拼 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 计次 | 整数型 | | | 得到的文本 | 文本型 | | | 置随机数种子 ()计次循环首 (个数, 计次 )如果真 (汉字或全拼 = 0 )得到的文本 = 得到的文本 + 到文本 (字符 (取随机数 (38, 80 )) + 字符 (取随机数 (38, 80 )) )如果真 (汉字或全拼 = 1 )得到的文本 = 得到的文本 + 取拼音 (到文本 (字符 (取随机数 (38, 80 )) + 字符 (取随机数 (38, 80 )) ), 1 )处理事件 ()计次循环尾 ()返回 (得到的文本 )开始排序.禁止 = 真 重定义数组 (猪圈, 假, 100000 ) 计次循环首 (取数组成员数 (猪圈 ), 计次 )猪圈 [计次 ].身高 = 取随机数 (0, 9 )猪圈 [计次 ].体重 = 取随机数 (0, 99 ) ÷ 10 猪圈 [计次 ].姓名 = 选择 (取随机数 (0, 1 ) = 1, “大”, “小”) + 文本_取随机汉字 (2, 0 ) + “猪” 计次循环尾 ()T = 取启动时间 ()多项排序 (猪圈, &比较 )调试输出 (“排序十万头猪耗时”, 取启动时间 () - T, “毫秒”)计次循环首 (取数组成员数 (猪圈 ), 计次 ) 计次循环尾 () 开始排序.禁止 = 假
如果觉得判断的嵌套不方便查看分支那按下面这种格式书写也可以
如果真 (A.身高 > B.身高 )返回 (1 )如果真 (A.身高 < B.身高 )返回 (-1 ) 如果真 (A.体重 > B.体重 )返回 (1 )如果真 (A.体重 < B.体重 )返回 (-1 ) 返回 (0 )
https://xzt168.lanzouj.com/irFYG259htoh
不想安装汇编插件的可以虚函数套娃的方式引用多条件排序↓ 不过速度会慢两三倍 大规模的数据 或者单一条件 不需要这个方案 优点是方便一点点 缺点是真的慢
多项排序 (猪圈, &虚晃一枪 )比较 (虚晃一枪, 虚晃一枪 ) 置入代码 ({ 139, 69, 8, 139, 0, 137, 69, 252 })释放内存 (释放地址 ) 置入代码 ({ 201 }) 如果真 (A.身高 > B.身高 )返回 (1 )如果真 (A.身高 < B.身高 )返回 (-1 ) 如果真 (A.体重 > B.体重 )返回 (1 )如果真 (A.体重 < B.体重 )返回 (-1 ) 返回 (0 )
来自群组: 热心网友 |