#include <stdio.h>
int main(int argc, const char * argv[]) {
//book1维数组,t:输入的几个数的下标,n:总数量
int book[1001],i,j,t,n;
for(i = 0;i <= 1000;i++){
//初始为0
book[i] = 0;
}
//输入一个数n,表示接下来有n个数
scanf("%d",&n);
for (int i = 0; i < n; i++) {
//把每一个数读到变量t中
scanf("%d",&t);
//进行计数,对编号为t的桶放一个小旗子
book[t]++;
}
//从高到低
// for(i = 1000;i >= 0;i--){
// printf("%d ",i);
//
// //j=1,book数组中默认的装的是0所以正常再没有录入数字的位置j>book[i],只有录入了数字的才会打印信息
// for(j = 1;j <= book[i];j++){
// printf("\n------%d\n ",i);
// printf("-------个数%d\n",book[i]);
// }
// }
//从低到高
for(i = 0;i <= 1000;i++){
printf("%d ",i);
//j=1,book数组中默认的装的是0所以正常再没有录入数字的位置j>book[i],只有录入了数字的才会打印信息
for(j = 1;j <= book[i];j++){
printf("\n------%d\n ",i);
printf("-------个数%d\n",book[i]);
}
}
getchar();
return 0;
}
原理:创建一个总个数的数组,将里面的元素都置为0,输入总个数范围内的数,将下标为该数的元素值+1,排序的时候判断数组总下标为输入的一些数的元素值是否大于1,如果大于则执行,则完成了简单桶排序
网友评论