|
发表于 2024-7-5 04:33:47
|
显示全部楼层
福建省泉州市
|
文本_分割文本排序_快速 | 文本型 | | |
要排序的文本 | 文本型 | | | | 行分隔符 | 文本型 | | | | 列分隔符 | 文本型 | | | | 排序的列 | 整数型 | | | | 数据类型 | 整数型 | | | | 排序方向正向 | 逻辑型 | | | | 返回数组 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 排序数组 | 自定义排序数组 | | 0 | 文本数组 | 文本型 | | 0 | 文本数组2 | 文本型 | | 0 | i | 整数型 | | | 结果 | 文本型 | | | 排序变量 | 自定义排序数组 | | 0 | 数据成员数量 | 整数型 | | | 插入位置 | 整数型 | | | 当前数据 | 自定义排序数组 | | | 当前分区成员数 | 整数型 | | | 当前位置 | 整数型 | | | 中间位置 | 整数型 | | | 中间数据 | 自定义排序数组 | | | 如果真 (要排序的文本 = “”) 返回 (“”) 如果真 (是否为空 (行分隔符 ))  行分隔符 = #换行符 如果真 (是否为空 (列分隔符 ))  列分隔符 = “|” 如果真 (是否为空 (排序的列 ))  排序的列 = 1 如果真 (是否为空 (数据类型 ))  数据类型 = 1 如果真 (是否为空 (排序方向正向 ))  排序方向正向 = 真  文本数组 = 分割文本 (要排序的文本, 行分隔符, ) 计次循环首 (取数组成员数 (文本数组 ), i ) 文本数组2 = 分割文本 (文本数组 [i ], 列分隔符, ) 如果真 (排序的列 < 1 或 排序的列 > 取数组成员数 (文本数组2 ))  返回 (“”) 判断 (数据类型 = 2 )   当前数据.整数 = 到整数 (文本数组2 [排序的列 ]) 判断 (数据类型 = 3 )   当前数据.小数 = 到小数 (文本数组2 [排序的列 ]) 判断 (数据类型 = 4 )   当前数据.日期时间 = 到时间 (文本数组2 [排序的列 ])  当前数据.文本 = 文本数组2 [排序的列 ]   数据类型 = 1 当前数据.原数据 = 文本数组 [i] 加入成员 (排序数组, 当前数据 ) 计次循环尾 ()数据成员数量 = 取数组成员数 (排序数组 ) 计次循环首 (数据成员数量, i ) 当前位置 = 1  当前分区成员数 = 取数组成员数 (排序变量 ) 当前数据 = 排序数组 [i ] 判断 (i = 1 ) 插入成员 (排序变量, 1, 当前数据 ) 到循环尾 () 判断 (数据类型 = 1 且 文本比较 (当前数据.文本, 排序变量 [当前分区成员数 ].文本, 真) ≥ 0 或 数据类型 = 2 且 当前数据.整数 ≥ 排序变量 [当前分区成员数 ].整数 或 数据类型 = 3 且 当前数据.小数 ≥ 排序变量 [当前分区成员数 ].小数 或 数据类型 = 4 且 当前数据.日期时间 > 排序变量 [当前分区成员数 ].日期时间 ) 插入成员 (排序变量, 当前分区成员数 + 1, 当前数据 ) 到循环尾 () 判断 (数据类型 = 1 且 文本比较 (当前数据.文本, 排序变量 [1 ].文本, 真) ≤ 0 或 数据类型 = 2 且 当前数据.整数 ≤ 排序变量 [1 ].整数 或 数据类型 = 3 且 当前数据.小数 ≤ 排序变量 [1 ].小数 或 数据类型 = 4 且 当前数据.日期时间 ≤ 排序变量 [1 ].日期时间 ) 插入成员 (排序变量, 1, 当前数据 ) 到循环尾 ()       判断循环首 (当前位置 < 当前分区成员数 - 1 )  中间位置 = (当前位置 + 当前分区成员数 ) \ 2   中间数据 = 排序变量 [中间位置 ]  如果真 (数据类型 = 1 且 当前数据.文本 = 中间数据.文本 或 数据类型 = 2 且 当前数据.整数 = 中间数据.整数 或 数据类型 = 3 且 当前数据.小数 = 中间数据.小数 或 数据类型 = 4 且 当前数据.日期时间 = 中间数据.日期时间 )   当前位置 = 中间位置   跳出循环 ()     如果 (数据类型 = 1 且 当前数据.文本 < 中间数据.文本 或 数据类型 = 2 且 当前数据.整数 < 中间数据.整数 或 数据类型 = 3 且 当前数据.小数 < 中间数据.小数 或 数据类型 = 4 且 当前数据.日期时间 < 中间数据.日期时间 )   当前分区成员数 = 中间位置    当前位置 = 中间位置     判断循环尾 () 插入位置 = 当前位置 + 1 插入成员 (排序变量, 插入位置, 当前数据 ) 计次循环尾 () 如果真 (是否为空 (返回数组 ) = 假) 重定义数组 (返回数组, 假, 0 ) 如果 (排序方向正向 ) 计次循环首 (取数组成员数 (排序变量 ), i )  结果 = 结果 + 排序变量 [i ].原数据 + 选择 (取数组成员数 (排序数组 ) = i, “”, 行分隔符 )  如果真 (是否为空 (返回数组 ) = 假)  加入成员 (返回数组, 排序变量 [i ].原数据 )    计次循环尾 ()  计次循环首 (取数组成员数 (排序变量 ), i ) 结果 = 结果 + 排序变量 [数据成员数量 - i + 1 ].原数据 + 选择 (取数组成员数 (排序数组 ) = i, “”, 行分隔符 ) 如果真 (是否为空 (返回数组 ) = 假) 加入成员 (返回数组, 排序变量 [i ].原数据 )  计次循环尾 () 返回 (结果 )
源码里看不出来什么原因导致的
测试证实bug存在
需要再逐步检查才能确定位置
|
|