箱排序(输出第k小的数)
箱排序,也叫桶排序 (Bucket sort),是一个排序算法,工作的原理是将数组分到有限数量的箱子(桶子)里。每个箱子(桶子)再分别排序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include<cstdio> #include<iostream> #include<algorithm> using namespace std; const int NR=1e5; int a[NR+10]; int box[NR+10]; int main() { int n,k; scanf ( "%d%d" , &n, &k); // 箱排序 //读入一个数组 for ( int i=1;i<=n;i++) { scanf ( "%d" , &a[i]); } //将数组装箱 for ( int i=1;i<=n;i++) { box[a[i]]++; } //拆箱并排序 int cnt=0; for ( int i=0;i<=NR;i++) //从小到大排序 { for ( int j=1;j<=box[i];j++) { a[++cnt]=i; } } printf ( "%d" , a[k]); return 0; } |
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步