变量名 | 类 型 | 静态 | 数组 | 备 注 |
长度 | 整数型 | | |
数 | 整数型 | | |
增量 | 整数型 | | |
元素 | 整数型 | | |
项目 | 整数型 | | |
起点 | 整数型 | | |
值 | 整数型 | | |
地址 | 整数型 | | |
索引 | 整数型 | | |
缓存 | 整数型 | | |
偏移 | 整数型 | | |
顺序 | 整数型 | | |
顺序 = -1
如果真 (从大到小
)
顺序 = 1
索引 = 申请内存 (取数组成员数 (数组) × 4, )长度 = 0
计次循环首 (取数组成员数 (数组
), 数
)
长度 = 长度 +
MultiByteToWideChar (936, 0,
取变量数据地址 (数组
[数
]), -1, 0, 0
) + 1
计次循环尾 ()缓存 =
申请内存 (长度 × 2,
)偏移 = 缓存
计次循环首 (取数组成员数 (数组
), 数
)
长度 =
MultiByteToWideChar (936, 0,
取变量数据地址 (数组
[数
]), -1, 0, 0
) × 2
MultiByteToWideChar (936, 0,
取变量数据地址 (数组
[数
]), -1, 偏移, 长度
)
__set (索引, (数 - 1
) × 4, 偏移
)
偏移 = 偏移 + 长度
计次循环尾 ()地址 =
取变量数据地址 (数组
)增量 = 0
判断循环首 (增量 <
取数组成员数 (数组
))

增量 = 增量 × 3 + 1
判断循环尾 ()
判断循环首 (增量 ≠ 0
)
增量 = 增量 ÷ 3

变量循环首 (增量,
取数组成员数 (数组
) - 1, 1, 数
)

元素 =
__get (索引, 数 × 4
)

项目 =
__get (地址, 数 × 4
)

起点 = 数 - 增量


值 = 起点


判断循环首 (值 ≥ 0
)


如果 (_StrCmpLogicalW (元素,
__get (索引, 值 × 4
)) = 顺序
)


__set (地址, (值 + 增量
) × 4,
__get (地址, 值 × 4
))



__set (索引, (值 + 增量
) × 4,
__get (索引, 值 × 4
))



跳出循环 ()

值 = 值 - 增量

判断循环尾 ()

如果真 (值 ≠ 起点
)

__set (地址, (值 + 增量
) × 4, 项目
)

__set (索引, (值 + 增量
) × 4, 元素
)



变量循环尾 ()
判断循环尾 ()释放内存 (索引
)释放内存 (缓存
)
|
希尔排序_汇编 | | |
|
数组地址 | 整数型 | | | |
数组长度 | 整数型 | | | | 索引地址 | 整数型 | | | | 比较函数地址 | 子程序指针 | | | | 从大到小 | 整数型 | | | |
置入代码 ({ 131, 236, 16, 139, 116, 36, 32, 139, 124, 36, 24, 49, 237, 235, 4, 107, 237, 3, 69, 59, 108, 36, 28, 124, 246, 235, 92, 139, 12, 134, 139, 20, 135, 137, 12, 36, 137, 84, 36, 8, 137, 68, 36, 12, 137, 195, 41, 235, 235, 17, 141, 4, 43, 139, 12, 158, 139, 20, 159, 137, 12, 134, 137, 20, 135, 41, 235, 131, 251, 0, 124, 20, 139, 4, 158, 137, 68, 36, 4, 255, 84, 36, 36, 131, 236, 8, 59, 68, 36, 40, 116, 214, 141, 4, 43, 139, 12, 36, 139, 84, 36, 8, 137, 12, 134, 137, 20, 135, 139, 68, 36, 12, 64, 59, 68, 36, 28, 124, 164, 49, 210, 137, 232, 185, 3, 0, 0, 0, 247, 249, 137, 197, 133, 237, 117, 233, 131, 196, 16, 93, 194, 20, 0
})