在伟健学长那看到这个算法,自己也编了一个!
发现在编程风格方面还有很大的不足,不过掌握那个算法拉!
#include <iostream>
using namespace std;
int *CountingSort(int a[], int n, int k)//0~k是范围,n数组中元素的个数,返回排序
{
int *p = new int[n];//排序后的数组
int *c = new int[k+1];
int i;
for (i=0; i<k+1; i++)//初始化
{
c[i] = 0;
}
for (i = 0; i<n; i++)
{
c[a[i]] = c[a[i]] + 1;
}
for (i = 1; i<k+1; i++)
{
c[i] = c[i] + c[i-1];
}
for (i = 0; i<n; i++)
{
p[c[a[i]]-1] = a[i];
c[a[i]]--;
}
delete c;
return p;
}
int main()
{
int a[] = {2,4,3,5,6,5,8,8,8};
int *c;
c = CountingSort(a,9,10);
int i;
for (i=0; i<9; i++)
{
cout<<c[i]<<endl;
}
delete c;
return 0;
}