桶排序改进——整数范围
算法演示(C语言版)
#include<stdio.h>
int main()
{
int book[10001]={0};
int book1[10001]={0};//定义负数桶并初始化
int i,j,t,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&t);
if(t>=0)
book[t]++;
else
{
t=t*(-1);
book1[t]++;//负数取绝对值存入数组
}
}
for(i=10000;i>=0;i--)
for(j=1;j<=book[i];j++)
printf("%d ",i);//注意正负数的输出顺序
for(i=1;i<=10000;i++)
for(j=1;j<=book1[i];j++)
printf("%d ",i*(-1));//输出原负数
return 0;
}
注:算法原理请参见博文
链接: C 语言的三种排序算法.