/* 桶排序:
*/
#include
using namespace std;
int main(){ int arr[1001];//假设排序数字范围是0-1000,所以我们需要有1001个桶 int i, j, n, type;
for(i = 0; i<1000; i++){
arr[i] = 0;//初始化数组
}
cin>>n;
for(i = 1; i <= n; i++){
cin>>type;
arr[type] ++;
} //使用type这个变量将每个出现的数填充到数组中
for(i = 1000; i >= 0; i--){
for(j = 1; j <= arr[i]; j++){
cout<<i<<" ";
}
}//从大到小输出
return 0;
}
解释原理: 给1000个数排序就需要准备1001个桶(给10个数排序就准备11个桶)每当一个数字出现,一维数组相应位置就需要+1; 输入结束以后。从后往前遍历,数组内容不为0则输出一次。