C30-9.7计数排序
原题链接:38471.note12025-09-07 20:33:36
发布于:江苏
一、选班长
#include <bits/stdc++.h>
using namespace std;
int bucket[15], x;
int main()
{
for (int i=1; i<=10; i++) {
cin >> x;
bucket[x] ++ ;
}
int maxx = 1; //假设班长是第1个人
for (int i=1; i<=10; i++) {
if (bucket[i] > bucket[maxx]) {
maxx = i;
}
printf("%d号选手的票数是%d\n",i, bucket[i]);
}
printf("班长是%d号选手,票数为%d\n", maxx, bucket[maxx]);
return 0;
}
/*
2 5 7 2 5 5 3 9 7 5
*/
二、计数排序
#include <bits/stdc++.h>
using namespace std;
int bucket[15], x;
int main()
{
for (int i=1; i<=10; i++) {
cin >> x;
bucket[x] ++ ;
}
//b[i]表示i出现的次数
for (int i=1; i<=10; i++) {
while(bucket[i]--)
cout << i << ' ';
}
return 0;
}
/*
2 5 7 2 5 5 3 9 7 5
*/
桶排序(去重)
#include <bits/stdc++.h>
using namespace std;
int n, x, b[1005] = {};
int main(){
cin >> n;
for (int i=1; i<=n; i++){
cin >> x;
b[x]++; //统计x出现的次数
}
for (int i=1; i<=1005; i++){ //下标
if(b[i]){ //b[j]表示出现的次数
cout << i <<' ';
}
}
return 0;
}
/*
[桶排序]
题目描述
输入 n ( 0<n≤100 ),然后输入 n 个整数,
将这 n 个整数升序排列后输出(用计数排序)。
这些整数的范围:1~100。
输入格式
输入有 2 行,第 1 行输入 n,第 2 行输入 n 个数。
输出格式
输出升序排列后的 n 个数,
数字间用一个空格隔开。
样例组
输入#1
6
45 100 45 2 100 45
输出#1
2 45 45 45 100 100
*/
这里空空如也
有帮助,赞一个