#include using namespace std; int main(){ //贪心算法: 使每个子问题达到最优,合并得到原问题的最优 //每次都做出当前的最优选择。
//三级: 结构体排序、枚举、递推、递归
//排序算法
//排序概念: 将一个序列按一定顺序排列
//1. 桶排序(计数排序)
//算法思路: 将待排序元素当作数组下标,做标记。
//时间复杂度: O(N)
//优点: 速度快
//缺点: 空间利用率不高
//适用情景: 数字较小
//注意事项: 用于桶排序的数组的长度由谁来决定? 最大的那个排序元素
//例题: 输入n个整数(n<=100,整数<=1000),输出n个整数的升序结果
//样例输入: 5
// 5 2 7 8 10
//样例输出:2 5 7 8 10
int n;
cin>>n;
int a[105]; //存储n个整数
int b[1005]={}; //桶 b[i]:数字i是否出现
for(int i=1;i<=n;i++){
cin>>a[i];
b[a[i]]=1;//标记桶中数字a[i]出现 (核心)
}
for(int i=0;i<=1000;i++){ //所有排序元素的范围
if(b[i]==1){
cout<<i<<" ";
}
}
//例题: 输入n个整数(n<=100,整数<=1000),输出n个整数的升序结果
//样例输入: 5
// 5 9 9 9 10
//样例输出:5 9 9 9 10
// int n;
// cin>>n;
// int a[105]; //存储n个整数
// int b[1005]={}; //桶 b[i]:数字i是否出现
// for(int i=1;i<=n;i++){
// cin>>a[i];
// b[a[i]]++;//标记桶中数字a[i]出现的次数 (核心)
// }
// for(int i=0;i<=1000;i++){ //所有排序元素的范围
// if(b[i]!=0){ //数字i的次数不为0
// //循环b[i]次输出i
// for(int j=1;j<=b[i];j++){
// cout<<i<<" ";
// }
// }
// }
return 0;
}
共 2 条回复
还有,数组开的太小了,这个题目是 20000,你开了 100, 不炸你炸谁
每个整数大于等于10、小于等于5000。