//计数排序
# include<stdio.h>
void Count_Sort(int A[],int len,int B[],int k)
{
int c[10];
for(int i=0;i<=k;i++)
{
c[i]=0;
}
//c[i]包含等于i的元素个数
for(int j=1;j<=len;j++)
{
c[A[j]]=c[A[j]]+1;
}
//c[i]为包含小于或等于i的元素个数
for(i=1;i<=k;i++)
{
c[i]=c[i]+c[i-1];
}
//将元素A[j]放到正确的位置上
for(j=len;j>=1;j--)
{
B[c[A[j]]]=A[j];
c[A[j]]=c[A[j]]-1;//因为有可能出现相同的元素,因此需要减1
}
}
void print(int B[],int len)
{
for(int i=1;i<=len;i++)
printf("%d ",B[i]);
printf("\n");
}
void main()
{
int A[]={0,2,9,8,5,7,6};
int B[6];
Count_Sort(A,6,B,9);
print(B,5);
}
计数排序
最新推荐文章于 2024-02-19 09:52:43 发布