找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 31|回复: 0

计数排序算法

[复制链接]

351

主题

341

回帖

2433

积分

管理员

积分
2433
发表于 2025-6-17 22:00:01 | 显示全部楼层 |阅读模式
// Counting Sort
(*
新建一个数组,长度为原排序数组元素 Max-Min;
再遍历整个排序数组,统计每个元素个数,对应存在新建数组中;
最后按照新建数组的下标顺序和个数,输出元素序列即可。
*)
// 适用范围:有限个数的整数
// 示例:0~100范围内的10个整数排序
//
FOR #i := 0 TO #DIFF DO
    #count_arr[#i] := 0;
END_FOR;
FOR #i := 0 TO #DIFF DO
    FOR #j := 0 TO #Length - 1 DO
        IF #i = #Sort_Arr[#j] THEN
            #count_arr[#i] := #count_arr[#i] + 1;  // 出现的元素计数
        END_IF;
    END_FOR;
END_FOR;

#count := 0;
FOR #i := 0 TO #DIFF DO
    WHILE #count_arr[#i] > 0 DO
        #Sort_Arr[#count] := #i;   // 按顺序输出数组的下标
        #count_arr[#i] := #count_arr[#i] - 1;
        #count := #count + 1;
    END_WHILE;
END_FOR;



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|笔记

GMT+8, 2025-7-7 12:40 , Processed in 0.035400 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表