news 2026/6/8 19:06:52

东方博宜OJ 1010:数组元素的排序 ← 桶排序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
东方博宜OJ 1010:数组元素的排序 ← 桶排序

【题目来源】
https://oj.czos.cn/p/1010

【题目描述】
对数组的元素按从小到大进行排序。

【输入格式】
第一行有一个整数 n(5≤n≤10);
第二行有 n 个整数,每个整数的值在 [0,
10^9]的范围内。

【输出格式】
输出排序后的数组。

【输入样例】
8
1 2 3 6 8 7 4 5

【输出样例】
1 2 3 4 5 6 7 8

【数据范围】
5≤n≤10

【算法分析】
● 桶排序:https://oi-wiki.org/basic/bucket-sort/
桶数优先选 10、20、100,或等于元素个数 n。
值域超大(1e5、1e9)时,固定桶数为 50~100,即桶数不随着值域变化。
gap=(最大值一最小值)+桶数量。


● 严谨来说,如下“桶排序”的代码是有 bug 的。即一维数组一旦开到本题所需的 1e9 的水准,必然内存溢出,报错。但测试时,取 N=1e3+5,也通过了。

#include <bits/stdc++.h> using namespace std; const int N=1e3+5; int a[N]; int n,x; int main() { cin>>n; for(int i=1; i<=n; i++) { cin>>x; a[x]++; } for(int i=1; i<N; i++) { while(a[i]) { cout<<i<<" "; a[i]--; } } return 0; } /* in: 5 6 9 2 7 1 out: 1 2 6 7 9 */

故考虑利用动态数组 vector 进行优化。

【算法代码:
桶排序

#include <bits/stdc++.h> using namespace std; const int bkt_num=10; vector<int> bkt[bkt_num]; int n,x; int main() { cin>>n; int gap=100; for(int i=0; i<n; i++) { cin>>x; int id=x/gap; bkt[id].push_back(x); } for(int i=0; i<bkt_num; i++) { sort(bkt[i].begin(),bkt[i].end()); for(int x:bkt[i]) { cout<<x<<" "; } } return 0; } /* in: 5 6 9 2 7 1 out: 1 2 6 7 9 */



【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/161347829
https://blog.csdn.net/hnjzsyjyj/article/details/161332702
https://blog.csdn.net/hnjzsyjyj/article/details/161346075
https://blog.csdn.net/hnjzsyjyj/article/details/161588834
https://blog.csdn.net/hnjzsyjyj/article/details/119820490
https://blog.csdn.net/hnjzsyjyj/article/details/119819927


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 19:04:29

3个关键步骤让老旧Mac焕发新生:OpenCore Legacy Patcher实战指南

3个关键步骤让老旧Mac焕发新生&#xff1a;OpenCore Legacy Patcher实战指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否曾为手中的Mac设备感到惋惜…

作者头像 李华
网站建设 2026/6/8 19:02:08

5步快速上手foobox-cn:打造你的专属音乐播放中心

5步快速上手foobox-cn&#xff1a;打造你的专属音乐播放中心 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox-cn是foobar2000的深度定制界面配置&#xff0c;基于默认用户界面(DUI)和JSplitter…

作者头像 李华
网站建设 2026/6/8 19:01:10

基于EdgeLock安全元件实现充电桩ISO 15118与OCPP 2.0.1安全合规方案

1. 项目概述&#xff1a;当智能充电桩遇上硬核安全 如果你正在开发电动汽车充电桩&#xff0c;或者对充电桩与汽车、云端如何安全“对话”感兴趣&#xff0c;那你一定绕不开两个核心标准&#xff1a; ISO 15118 和 OCPP 。前者定义了电动汽车与充电桩之间高级通信的“语言”…

作者头像 李华
网站建设 2026/6/8 18:59:25

如何用microeco快速完成微生物组数据分析:完整指南与实战技巧

如何用microeco快速完成微生物组数据分析&#xff1a;完整指南与实战技巧 【免费下载链接】microeco An R package for downstream data analysis of microbiome omics data 项目地址: https://gitcode.com/gh_mirrors/mi/microeco microeco是一款强大的R语言工具包&…

作者头像 李华