#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
//a[] 为界于 0-k之间的正整数
int B[100];//存放最终排序数组
int C[100];//临时存储区
void CountingSort(int A[], int B[], int n, int k)
{
int i, j;
for(i = 0 ; i <= k ; i++)
C[i] = 0;
for(j = 1 ; j <= n ; j++)
C[ A[j] ] = C[ A[j] ] + 1 ;
//C[i]包含等于i的元素个数
for(i = 1 ; i <= k ; i++)
C[i] = C[i-1] + C[i];
//C[i]包含小于或等于i的元素个数
for(j = n ; j > 0 ; j--)
{
B[ C[A[j]] ] = A[j];
C[ A[j] ] = C[ A[j] ] - 1;
}
}
int main()
{
int T, i = 1, n, k = 0, a[100];
freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
cin >> T;
n = T;
while(T--)
{
cin>>a[i];
i++;
if(k < a[i])
k = a[i];
}
CountingSort(a, B, n, k);
for(i = 1 ; i <= n; i++)
cout<< B[i] <<" ";
fclose(stdin);
//fclose(stdout);
return 0;
}计数排序
最新推荐文章于 2021-11-24 23:48:56 发布
本文介绍了一种用于整数排序的计数排序算法,包括其原理、代码实现及应用示例。
1126

被折叠的 条评论
为什么被折叠?



