#include <stdio.h>
#include <stdlib.h>
void countsort(int ndata[],int newdata[],int begin,int end);
int main()
{
int nData[8] = {2,5,3,0,2,3,0,3}; //创建10个数据,测试
int newdata[8];
countsort(nData, newdata,0,7); //调用插入排序
for (int i = 0; i < 8; ++i)
{
printf("%d ", newdata[i]);
}
printf("/n");
system("puase");
return 0;
}
void countsort(int ndata[],int newdata[],int begin,int end)
{
int c[10];
for(int i=0;i<10;i++)
c[i]=0;
for(i=0;i<=end;i++)
c[ndata[i]]++;
for(i=1;i<=9;i++)
c[i]=c[i]+c[i-1];
for(i=end;i>=0;i--)
{
newdata[c[ndata[i]]-1]=ndata[i];
c[ndata[i]]--;
}
}
计数排序:复杂度O(n),且十分稳定
注意程序在newdata[c[ndata[i]]-1]=ndata[i];出现问题