易语言计数排序

算法的步骤如下:

(1)找出待排序的数组中最大和最小的元素
(2)统计数组中每个值为i的元素出现的次数,存入数组C的第i项
(3)对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)
(4)反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1

511遇见

计数排序

.版本 2
.支持库 spec
 
.子程序 计数排序, , , 计数排序
.局部变量 array, 整数型, , "0"
.局部变量 max, 整数型
.局部变量 局变_桶子, , , "0"
.局部变量 局变_排序后, , , "0"
.局部变量 n1, 整数型
.局部变量 i, 整数型
.局部变量 m1, 整数型
.局部变量 min, 整数型
.局部变量 d, 双精度小数型
 
array = { 95, 94, 91, 98, 99, 90, 99, 93, 91, 92 }
max = array [1]
.计次循环首 (10, i)
    .判断开始 (array [i] > max)
        max = array [i]
    .判断 (array [i] < min)
        min = array [i]
 
    .默认
 
    .判断结束
 
.计次循环尾 ()
d = max - min
重定义数组 (局变_桶子,, d + 1)
.计次循环首 (取数组成员数 (array), n1)
 
    ' 调试输出 (n1, 参数_原始 [n1])
    ' 调试输出 (局变_桶子 [参数_原始 [n1]])  ‘ 最小不能为0  ,否则此处数组0  报错
    局变_桶子 [array [n1]] = 局变_桶子 [array [n1]]1
.计次循环尾 ()
 
重定义数组 (局变_排序后,, 取数组成员数 (array))
 
.计次循环首 (取数组成员数 (局变_桶子), n1)
    .如果真 (局变_桶子 [n1]0)
 
        .计次循环首 (局变_桶子 [n1], )
            m1 = m1 + 1
 
            局变_排序后 [m1] = n1
        .计次循环尾 ()
    .如果真结束
 
.计次循环尾 ()
array = 局变_排序后
调试输出 (array)

发布日期:

所属分类: 易语言 标签:  


上一篇:

下一篇: