首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >杨校老师课堂之不去重桶排序算法——桶计数应用专项题单

杨校老师课堂之不去重桶排序算法——桶计数应用专项题单

原创
作者头像
杨校
发布2025-07-03 10:18:07
发布2025-07-03 10:18:07
9700
代码可运行
举报
文章被收录于专栏:C++信息学奥赛C++信息学奥赛
运行总次数:0
代码可运行

专项训练

1. 桶排序

题目描述

输入5个不大于10的正整数,请按照从小到大的顺序输出这5个数。

输入描述

输入5个正整数。

输出描述

从小到大顺序输出5个数。中间用空格隔开。

样例

输入

2 5 2 1 8

输出

1 2 2 5 8

代码语言:javascript
代码运行次数:0
运行
复制
#include<iostream>  
using namespace std;

int a[15] = {0};

int main(){  // 主函数
    int x;  // 定义一个大小为15的整型数组a并初始化为0,以及一个整型变量x
    for(int i = 1; i <= 5; i++){  // 循环5次,从1到5
        cin >> x;  // 从标准输入读取一个整数到x
        ++a[x];  // 将数组a中下标为x的元素值加1
    }

    for(int i = 1; i <= 10; i++){  // 循环10次,从1到10
        for(int j = 1; j <= a[i]; j++){  // 根据a[i]的值进行循环
            cout << i << " ";  // 输出i,并输出一个空格
        }
    }

    return 0;  // 主函数返回0
}

2. 俄罗斯套娃(不去重)

题目描述

本来有一个完整的俄罗斯套娃,现在被小可都拆开了,很是凌乱,现在需要你帮我按套娃的尺寸的给我(每个尺寸大小可能重复),帮我一起把套娃组装起来!

输入描述

每组测试数据第一行以一个整数n(1<=n<=100)开始,接下来n个整数(代表俄罗斯套娃的尺寸,最大不超过100)用空格隔开。

输出描述

对于每组测试数据,输出一行,表示递给我俄罗斯套娃尺寸的顺序(从大到小)。

样例

4

4 1 2 3

4 3 2 1

代码语言:javascript
代码运行次数:0
运行
复制
#include<iostream>  // 包含输入输出流头文件
using namespace std;  // 使用标准命名空间

int main(){  // 主函数B
    int n, t, a[105] = {0};  // 定义整数n、t,以及大小为105的整型数组a并初始化为0
    cin >> n;  // 从标准输入读取一个整数到n
   
    for(int i = 1; i <= n; i++){  // 循环n次,从1到n
        cin >> t;  // 从标准输入读取一个整数到t
        a[t]++;  // 将数组a中下标为t的元素值加1
    }

    for(int i = 100; i >= 1; i--){  // 从100到1倒序循环
        for(int j = 1; j <= a[i]; j++){  // 根据a[i]的值循环
            cout << i << " ";  // 输出i,并输出一个空格
        }
    }

    return 0;  // 主函数返回0
}

3. 成绩序列

【题目描述】

阶段测试结束之后,达达统计了班里面每位同学的成绩(成绩可能有重复),现在达达想要将所有同学的成绩按照从小到大的顺序输出,同时计算得分大于等于90分的同学有多少人,请帮助达达解决这个问题。

【输入格式】

第一行一个正整数n,表示同学数量。 第二行n个整数,表示每位同学的成绩,成绩介于1~100之间,包含1和100。

【输出格式】

输出两行,第一行是从小到大排好序的成绩序列,第二行是分数大于等于90的人数。

【输入样例】

8

98 69 83 93 75 79 98 90

【输出样例】

69 75 79 83 90 93 98 98

4

代码语言:javascript
代码运行次数:0
运行
复制
#include<iostream>  // 包含输入输出流头文件
using namespace std;  // 使用标准命名空间

int main(){  // 主函数
    int n, x;  // 定义整数n和x
    int a[105] = {0};  // 定义大小为105的整型数组a并初始化为0
    cin >> n;  // 从标准输入读取一个整数到n
    for(int i = 1; i <= n; ++i){  // 循环n次,从1到n
        cin >> x;  // 从标准输入读取一个整数到x
        ++a[x];  // 将数组a中下标为x的元素值加1
    }

    for(int i = 1; i <= 100; ++i){  // 循环100次,从1到100
        for(int j = 1; j <= a[i]; ++j){  // 根据a[i]的值循环
            cout << i << " ";  // 输出i,并输出一个空格
        }
    }

    cout << endl;  // 输出换行符

    int sum = 0;  // 定义整数sum并初始化为0
    for(int i = 90; i <= 100; ++i){  // 循环从90到100
        sum = sum + a[i];  // 将a[i]累加到sum中
    }

    cout << sum << endl;  // 输出sum的值,并换行
    return 0;  // 主函数返回0
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 专项训练
    • 1. 桶排序
    • 题目描述
    • 输入描述
    • 输出描述
    • 样例
    • 输入
    • 输出
    • 2. 俄罗斯套娃(不去重)
    • 题目描述
    • 输入描述
    • 输出描述
    • 样例
    • 3. 成绩序列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档