- 计数排序是一种简单而有效的非比较类排序算法。
- 按照计数排序的思想,需要设置一个额外的数组,该数组中第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),