简单计数排序

  • 计数排序是一种简单而有效的非比较类排序算法。
  • 按照计数排序的思想,需要设置一个额外的数组,该数组中第i个元素用存放排序数据中值等于i的元素个数。借助这个额外的数组中存储的计数信息,就可以将待排序的数据按照规定的顺序及其实现列出来。

步骤:
1.统计数组中每个值为i的元素出现的次数,存入数组C的第i项。
2.根据C[i],输出待排数据。

简单的计数排序程序:

#include<iostream>
#include<cstdio>
int main()
{
    int a[10]={6,1,12,6,18,1,18,7,0,6};  /*通过初始化给出待排序值*/
    int C[21]={0};  /*用于计数的C数组的所有元素初值为0*/
    int i,j;  
    /*为每一个待排序的数计数*/
    for(i=0;i<10;i++)
        C[A[i]]++;  /*例如,A[i]为6时,C[6]++,C[i]是i出现的次数*/
        /*根据计数信息输出*/
    for(i=0;i<21;i++)  /*考察待排序数据范围内的每一个数i*/
        for(j=1;j<C[i];j++)  /*输出C[i]个i,此即是排序的结果*/
            printf("%d ",i);
    printf("\n");
    return 0;
}

用来计数的数组C的长度取决于待排序数组中数据范围(等于待排序数组中的最大值与最小值的差加上1),

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值