排序:计数排序

一、概念

计数排序是非比较排序,是对哈希直接定址法的变形应用。

二、思想

利用数组统计相同数据出现的次数,例如整型数据m出现n次,就在数组m位置记录数据为n。

最后从头遍历数组打印数据即可。

通俗来讲就是,数组下标即为数据,下标所指位置的值即为数据出现的次数。

对于较大的数据,可以利用映射关系。用所有数据减去最小的数据,映射到计数数组的0-range位置上。

三、优缺点

优点:1.数据较为集中时,效率极高

缺点:1.只适合较为集中的数据,不适合分散的数据

2.只适合整型数据,不适合浮点型、字符型数据

四、代码实现(C语言)

cpp 复制代码
void CountSort(int* a, int n)
{
    int min = a[0];
    int max = a[0];
    //找到数据中的最大值与最小值
    for (int i = 0; i < n; i++)
    {
        if (a[i] < min)
            min = a[i];
        if (a[i] > max)
            max = a[i];
    }
    
    //数据范围
    int range = max - min + 1;

    //计数数组,初始值为0
    int* count = (int*)calloc(range, sizeof(int));

    //统计相同数据出现的次数
    for (int i = 0; i < n; i++)
    {
        count[a[i] - min]++;
    }

    //输出数据
    for (int i = 0; i < range; i++)
    {
        while (count[i])//计数数组该位置存在数据
        {
            printf("%d ", i + min);
            count[i]--;
        }
    }
}
相关推荐
MMjeaty17 分钟前
数据结构——栈和队列
数据结构·算法
瓜瓜怪兽亚21 分钟前
前端基础知识---10 Node.js(三)
数据结构·数据库·node.js
机器学习之心5 小时前
多目标鲸鱼优化算法(NSWOA),含46种测试函数和9个评价指标,MATLAB实现
算法·matlab·多目标鲸鱼优化算法·46种测试函数·9个评价指标
古译汉书6 小时前
嵌入式铁头山羊STM32-各章节详细笔记-查阅传送门
数据结构·笔记·stm32·单片机·嵌入式硬件·个人开发
max5006006 小时前
基于Meta Llama的二语习得学习者行为预测计算模型
人工智能·算法·机器学习·分类·数据挖掘·llama
橘颂TA7 小时前
【数据结构】解锁数据结构:通往高效编程的密钥
数据结构
王哥儿聊AI7 小时前
Lynx:新一代个性化视频生成模型,单图即可生成视频,重新定义身份一致性与视觉质量
人工智能·算法·安全·机器学习·音视频·软件工程
手握风云-9 小时前
优选算法的寻踪契合:字符串专题
算法
闭着眼睛学算法9 小时前
【华为OD机考正在更新】2025年双机位A卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】
java·c语言·javascript·c++·python·算法·华为od
IT古董9 小时前
【第五章:计算机视觉-项目实战之目标检测实战】2.目标检测实战:中国交通标志检测-(2)中国交通标志检测数据格式转化与读取
算法·目标检测·计算机视觉