|
http://bbs.eyuyan.com/read.php?tid=360766
论坛4月就有完整的桶排序,你发现晚了
[mw_shl_code=c,true].版本 2
.子程序 数组模块_桶排序, , 公开, 排序正整数 注意: 最小不能为0,也不能为负数 // 真为从小到大,反之假
.参数 参数_原始, 整数型, 参考 数组
.参数 参数_顺序, 逻辑型, 可空
.局部变量 局变_最大数, 整数型
.局部变量 局变_桶子, 整数型, , "0", 根据 局变_最大数 定义需要 多少个桶子
.局部变量 n1, 整数型
.局部变量 m1, 整数型
.计次循环首 (取数组成员数 (参数_原始), n1) ' 找数组里面最大的数
.如果真 (局变_最大数 < 参数_原始 [n1])
局变_最大数 = 参数_原始 [n1]
.如果真结束
.计次循环尾 ()
' 调试输出 (局变_最大数, “局变_最大数”)
重定义数组 (局变_桶子, 假, 局变_最大数) ' 从 0 --- 最大值
.计次循环首 (取数组成员数 (参数_原始), n1)
' 调试输出 (n1, 参数_原始 [n1])
' 调试输出 (局变_桶子 [参数_原始 [n1]]) ‘ 最小不能为0 ,否则此处数组0 报错
局变_桶子 [参数_原始 [n1]] = 局变_桶子 [参数_原始 [n1]] + 1
.计次循环尾 ()
.如果真 (是否为空 (参数_顺序) = 真)
参数_顺序 = 真
.如果真结束
.如果 (参数_顺序 = 真)
.计次循环首 (取数组成员数 (局变_桶子), n1)
.如果真 (局变_桶子 [n1] > 0)
.计次循环首 (局变_桶子 [n1], )
m1 = m1 + 1
参数_原始 [m1] = n1
.计次循环尾 ()
.如果真结束
.计次循环尾 ()
.否则
m1 = 取数组成员数 (参数_原始)
.计次循环首 (取数组成员数 (局变_桶子), n1)
.如果真 (局变_桶子 [n1] > 0)
.计次循环首 (局变_桶子 [n1], )
参数_原始 [m1] = n1 ' 这两行与正序的两行 顺序不能错,否则数组0报错
m1 = m1 - 1
.计次循环尾 ()
.如果真结束
.计次循环尾 ()
.如果结束
' http://ahalei.blog.51cto.com/4767671/1362789 详情 【啊哈!算法】最快最简单的排序——桶排序
[/mw_shl_code] |
|