| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 数组_排序 | 二分法排序.只能对文本数组进行排序,整数数组请用核心支持库的. | ||||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 要排序的数组 | 文本型 | 排序方式 | 字节型 | 可空,默认为0 0=升序排序 1=降序排序 | 区分大小写 | 逻辑型 | 可空,默认“真”。真=区分大小写,假=不区分 |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| N | 整数型 | |||||
| 排序数组 | 文本型 | "0" | ||||
| 成员数量 | 整数型 | |||||
| 高位 | 整数型 | |||||
| 低位 | 整数型 | |||||
| 中间位 | 整数型 | |||||
| 比较结果 | 整数型 | 感谢会员 落雪 提供代码 | ||||
清除数组 (要排序的数组)
如果真 (是否为空 (区分大小写) = 真)
区分大小写 = 真
计次循环首 (取数组成员数 (排序数组), N)
判断 (成员数量 = 0)
插入成员 (要排序的数组, 1, 排序数组 [N])



高位 = 成员数量
低位 = 1
中间位 = (高位 + 低位) \ 2
' ; API_lstrcmp 通过比较ASCII码进行文本的排序,速度快

判断 (区分大小写 = 假)

比较结果 = lstrcmpA (到大写 (排序数组 [N]), 到大写 (要排序的数组 [成员数量])) ' 不区分就都算大写好了.因为在ACSII码中,大小写字母都是挨着的,所以不会出现"夹"在中间的字符.

比较结果 = lstrcmpA (排序数组 [N], 要排序的数组 [成员数量])




判断 (比较结果 ≥ 0)

插入成员 (要排序的数组, 成员数量 + 1, 排序数组 [N])

判断 (lstrcmpA (排序数组 [N], 要排序的数组 [1]) ≤ 0)

插入成员 (要排序的数组, 1, 排序数组 [N])


判断循环首 (高位 - 低位 > 1)


如果真 (排序数组 [N] = 要排序的数组 [中间位])


跳出循环 ()


如果 (lstrcmpA (排序数组 [N], 要排序的数组 [中间位]) < 0)


高位 = 中间位


低位 = 中间位

中间位 = (高位 + 低位) \ 2

判断循环尾 ()


判断 (lstrcmpA (排序数组 [N], 要排序的数组 [中间位]) ≤ 0)


插入成员 (要排序的数组, 中间位, 排序数组 [N])


插入成员 (要排序的数组, 中间位 + 1, 排序数组 [N])






成员数量 = 取数组成员数 (要排序的数组)
计次循环尾 ()
如果真 (排序方式 = 1)
数组_反转 (要排序的数组)
词条作者信息 使用例程
