基本思想:将数据阵列分到有限数量的桶子里,每个桶子再进行排序。
M[8]={5,2,30,98,20,1,45,80}进行排序
分到1——10,11——50,51——100的3个桶
(可以将a[M[i]-1]换为a[M[I],后面得改)
#include<stdio.h>
void main()
{
int a[10] = { 0 }, b[40] = { 0 }, c[50] = { 0 };
int M[8] = { 5,2,30,98,20,1,45,80 };
int i ;
for (i = 0; i < 8; i++)
{
if (M[i] > 0 && M[i] < 11)
{
a[M[i] - 1] = 1;
if (M[i] > 11 && M[i] < 51)
{
b[M[i] - 10 - 1] = 1;
}
if (M[i] > 51 && M[i] < 100)
{
c[M[i] - 50 - 1] = 1;
}
}
for (i = 0; i < 10; i++)
{
if (a[i] == 1)
{
printf("%d ", i + 1);
}
}
for (i = 0; i <40; i++)
{
if (b[i] == 1)
{
printf("%d ", i + 11);
}
}
for (i = 0; i <50 ; i++)
{
if (c[i] == 1)
{
printf("%d ", i + 51 );
}
}
}