8 条题解
-
2
解析
计数排序的原理就是把所有的数按照数值进行归类,再按照顺序依次把归类好的数输出,其中要注意的是cnt数组长度需要定义为输入数据的最大值。
题解
#include <iostream> using namespace std; int main() { // 定义,输入 int a[50005]; int n; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; // 排序_start int cnt[1005]; // 计数,cnt[i]是i出现的次数 // 清零 for (int i = 1; i <= 1000; i++) cnt[i] = 0; // 计数 for (int i = 1; i <= n; i++) cnt[a[i]]++; // 当前的数(a[i])出现的次数(cnt[a[i]])加1 // 排序_end // 输出_start for (int i = 1; i <= 1000; i++) { while (cnt[i] > 0) { // 当前的数(i)的个数(cnt[i])还有的话 cout << i << " "; cnt[i]--; // 输出了一个i,cnt[i]少一个 } } // 输出_end return 0; }
-
0
思路:
用计数排序对数组进行排序,然后输出
#include <iostream> using namespace std; int num[50005],cnt[1005]; int main() { int n; cin >> n; for(int i = 0;i < n;i++) cin >> num[i]; //计数排序 for(int i = 0;i < n;i++) cnt[num[i]]++;//在cnt的第num[i]上+1,即num[i]出现的次数+1 for(int i = 1;i <= 1000;i++)//因为1 <= 数字 <= 1000,所以循环范围应该是1~1000 { for(int j = 1;j <= cnt[i];j++)//循环cnt[i]次(i出现的次数次) //cnt[i]即为i出现的次数,如果cnt[i]为0的话则不会输出,所以不需要去额外判断cnt[i]是否等于0 cout << i << ' ';//输出i } return 0; }
-
-1
玩mc的免费抄!玩盗版mc游戏的人,s #include <bits/stdc++.h>//打开库 using namespace std; int main() { int n, m, cm[10000000];//建造莫名其妙的变量 cin >> n; for (int i = 1; i <= n; i++)//整个莫名其妙的循环,呵呵呵呵Y(+v-)Y { cin >> m; cm[m]++; } for (int i = 1; i <= 1000; i++)//懒得说了 { for (int j = 1; j <= cm[i]; j++) { cout << i << " "; } } return 0; }//拜拜,hihihi😄 😄
- 1
信息
- ID
- 323
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 1929
- 已通过
- 454
- 上传者