桶排序---

1、算法概念

桶排序:一种非比较的排序算法。桶排序采用了一些分类和分治的思想,把元素的值域分成若干段,每一段对应一个桶。在排序的时候,首先把每一个元素放到其对应的桶中,再对每一个桶中的元素分别排序,再按顺序把每个桶中的元素依次取出,合并成最终答案。

2、步骤

  1. 将值域分成瑞杆端,每段对应一个桶
  2. 将待排序元素放入对应的桶中
  3. 将个桶内的元素进行排序
  4. 将桶中的元素一次取出

C++语言

桶中只有一种数值

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 7;
int n;
int bucket[MAXN];//一个值对应一个桶
int main() {cin >> n ;for (int i = 1;i <= n;i++) {int x;cin >> x;//由于每个桶中只有一个值,我们只需要记录桶中的元素个数bucket[x]++;}for(int i = 0; i <= n; i++){//值为i的元素有bucket[i]个for (int j = 0; j <= bucket[i]; ++j) {cout << i << " ";}}cout << endl;
}

桶中有多种数值 

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 5e5 + 7;
int n;
vector<int> bucket[MAXN];
int main() {cin >> n ;for (int i = 1;i <= n;i++) {int x;cin >> x;bucket[x / 1000].push_back(x);}for(int i = 0;i < MAXN;i++){//对每个桶的操作}for(int i = 0; i < MAXN; i++){for (auto item : bucket[i]) {cout << item << " ";}}cout << endl;
}

Java语言

import java.util.*;public class Main {private static final int MAXN = 500007;private static int[] bucket = new int[MAXN];public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();for (int i = 1; i <= n; i++) {int x = scanner.nextInt();bucket[x]++;}for (int i = 0; i <= n; i++) {for (int j = 1; j <= bucket[i]; j++) {System.out.print(i + " ");}}System.out.println();scanner.close();}
}
import java.util.*;public class Main {private static final int MAXN = 500007;private static List<Integer>[] bucket = new ArrayList[MAXN];public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();for (int i = 0; i < MAXN; i++) {bucket[i] = new ArrayList<>();}for (int i = 1; i <= n; i++) {int x = scanner.nextInt();bucket[x / 1000].add(x);}for (int i = 0; i < MAXN; i++) {Collections.sort(bucket[i]);}for (int i = 0; i < MAXN; i++) {for (int item : bucket[i]) {System.out.print(item + " ");}}System.out.println();scanner.close();}
}

 

3、桶排序的优势

  • 对于数据量较大但值域较小的数据,如n>10^{7}a_i{}<10^{^{6}},可以做到每个值对应一个桶,桶排序的时间复杂度为O(n)。推荐使用桶排序。
  • 对于值域较小的数据,桶排序的时间复杂度与每个桶内排序的方法有关,优势不明显,对于这种数据一般不适用桶排序。

例题---计数排序

https://www.lanqiao.cn/problems/1314/learning/

给定一个长度为n的数组a,请你将a排完序后输出。

输入描述:

第一行包含一个整数n,表示数组a的长度。

第二行包含n个整数,分别表示a1~an。

输出描述:

输出共一行,包含n个整数,表示排完序后的数组a。

示例:5

           4 3 2 1 5                                          1 2 3 4 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EF数据持久化(三层架构,公司查,改)

效果图 Model设置具体流程在下面链接中 https://blog.csdn.net/Mr_wangzu/article/details/136805824?spm1001.2014.3001.5501 DAL using System; using System.Collections.Generic; using System.Linq; using System.Web; using WebApplication2.Models; namespace WebAppli…

结构体,联合体,枚举( 2 )

目录 2.联合体 2.1联合体类型的声明 2.2联合体的特点 2.3联合体的内存大小 3.枚举 3.1枚举类型的声明 3.2枚举类型的优点 3.3枚举类型的使用 2.联合体 联合体&#xff08;Union&#xff09;是另一种复合数据类型&#xff0c;它允许我们在同一内存位置存储不同的数据类型…

UE4_动画基础_ 瞄准偏移1D(Aim Offset Blend Space 1D)

瞄准偏移1D基本上可以完成角色的向左看向右看或者向上看向下看&#xff0c;像混合空间1D一样只有一个轴向可用。 操作步骤&#xff1a; 1、新建第三人称模板项目。 2、右键——动画——瞄准偏移1D 选取骨骼 双击打开 3、瞄准偏移混合的是姿势&#xff0c;我们需要创建姿势。 …

结合创新!多尺度特征融合+Transformer,参数和计算成本减半

通过多尺度特征融合&#xff0c;模型能够捕捉到不同层次的视觉细节&#xff0c;而Transformer的自注意力机制能够在这些不同层次的特征之间建立联系&#xff0c;有效地整合全局上下文信息&#xff0c;让模型能够应对多样化的视觉场景和变化。 这种结合策略充分利用了二者各自的…

库位电子标签可视化管理,让仓库更智能

一、工厂仓储的目前管理现状 目前工厂仓储管理存在诸多问题&#xff0c;如物料数量种类多&#xff0c;寻找困难且耗时&#xff1b;盘点人力成本高且速度慢&#xff1b;存储位置不清晰&#xff0c;常找不到物料&#xff0c;且多发、少发、错料现象时有发生&#xff1b;系统与库…

SSTI模板注入(jinja2)

前面学习了SSTI中的smarty类型&#xff0c;今天学习了Jinja2&#xff0c;两种类型都是flask框架的&#xff0c;但是在注入的语法上还是有不同 SSTI&#xff1a;服务器端模板注入&#xff0c;也属于一种注入类型。与sql注入类似&#xff0c;也是通过凭借进行命令的执行&#xff…

C++ 中的 vector 的模拟实现【代码纯享】

文章目录 C 中的 vector 模拟实现1. vector 的基本概念2. vector 的基本操作3. vector 的模拟实现4.代码纯享5. 总结 C 中的 vector 模拟实现 在 C 中&#xff0c;vector 是一个非常重要的容器&#xff0c;它提供了动态数组的功能。在本篇博客中&#xff0c;我们将尝试模拟实现…

函数参数缺省和内联函数【C++】

文章目录 函数参数缺省函数参数缺省的条件和要求 内联函数内联函数的工作原理内联函数的定义方法内联函数的要求解决方法&#xff1a;直接在.h中定义内联函数的函数体 内联函数再Debug模式下默认是不展开的 函数参数缺省 顾名思义&#xff1a;可以少传一个/多个参数给函数&…

防止推特Twitter账号被冻结,应该选什么代理类型IP?

在处理多个 Twitter 帐号时&#xff0c;选择合适的代理IP对于避免大规模帐户暂停至关重要。现在&#xff0c;问题出现了&#xff1a;哪种类型的代理是满足您需求的最佳选择&#xff1f;下面文章将为你具体讲解推特账号冻结原因以及重点介绍如何选择代理IP。 一、推特账号被冻结…

3个 JavaScript 字符串截取方法

在 JavaScript 中&#xff0c;可以使用 substr()、slice() 和 substring() 方法截取字符串. substring() substring() 方法返回一个字符串在开始索引到结束索引之间的一个子集&#xff0c;或从开始索引直到字符串的末尾的一个子集。语法如下&#xff1a; str.substring(inde…

通信术语:初学者入门指南(二)

1.SAR&#xff1a;Synthetic Aperture Radar合成孔径雷达&#xff0c;是一种雷达系统&#xff0c;通常用于地球或行星的遥感成像。相较于传统的实孔径雷达&#xff0c;SAR 通过在相对较长的时间内&#xff0c;对来自同一地点的多个雷达反射信号进行综合处理&#xff0c;实现了更…

【C+ +】第一个C+ + 项目的创建及namespace命名空间解释C++中的输入输出

目录 1.创建第一个c项目 1.1项目创建 1.2 .cpp源文件建立 1.3 第一个c程序hello world对比c语言hello world 2.命名空间 2.1 C关键字 2.2 命名空间---解决c语言中的命名冲突 2.2.1 namespace命名空间用法 2.2.2 &#xff1a;&#xff1a; 预作用限定符 2.2.3 命名空间的嵌套…

【嵌入式智能产品开发实战】(七)—— 政安晨:通过ARM-Linux掌握基本技能【环境准备:树莓派】

目录 Raspberry Pi OS 下载系统镜像 使用SSH客户端登陆 升级更新 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 嵌入式智能产品开发实战 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正…

人工智能|深度学习——基于Xception实现戴口罩人脸表情识别

一、项目背景 近年来&#xff0c;随着人工智能技术的不断发展&#xff0c;人脸表情识别已经成为了计算机视觉领域中的重要研究方向之一。然而&#xff0c;在当前的疫情形势下&#xff0c;佩戴口罩已经成为了一项必要的防疫措施&#xff0c;但是佩戴口罩会遮挡住人脸的部分区域&…

换到idf 5.0版本后报错 jsmn could not be found

原因&#xff1a; idf5.0去掉了部分组件&#xff0c;包括jsmn&#xff0c;工程中adf又用到了这个组件&#xff0c;所以会报错。 解决办法&#xff1a; 升级adf到新版本即可。

docker导出导入镜像

docker导出镜像 查看要导出的镜像 docker images主要有两列 REPOSITORY TAG 导出命令 导出公式 docker save -o xxxx.tar REPOSITORY:TAG例子 docker save -o minio.tar minio/minio:latestminio/minio:latest可以使用image id代替&#xff0c;但是使用image id会导致导…

能效监测终端为什么这么好用?

能效监测终端是一种现代管理工具&#xff0c;它在企业和机构的能源管理体系中起着核心的作用。这些监测设备能够精确掌握用电设备的功耗情况&#xff0c;为用户实现节能减排和成本控制提供了有效的技术支持。以下内容将具体解释为什么能效监测终端如此好用&#xff0c;并从多个…

风声 | “革命”启动,这里是量子的新起点——

非洲正站在量子技术变革的前沿。 尽管非洲的量子安全技术尚未达到其他地区的先进水平&#xff0c;但它被视为未来计算技术发展的关键要素。如《福布斯非洲》所述&#xff1a;“量子计算目前的发展阶段&#xff0c;可以比喻为20世纪60年代的传统计算技术水平。” 非洲拥有众多的…

收下这份地表最强参会指南,4月16日,玩转百度Create大会不迷路

欢迎来到英杰社区&#xff1a; https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区&#xff1a; https://bbs.csdn.net/topics/617897397 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff…

vulnhub之devguru靶场提权过程(vulnhub打靶日记)

一、环境搭建 VM版本&#xff1a;17.5.1 build-23298084 攻击机&#xff1a;Kali2024&#xff08;下载地址&#xff1a;https://www.kali.org/&#xff09; 靶机&#xff1a;vulnhub靶场Devguru&#xff08;下载地址&#xff1a;https://www.vulnhub.com/entry/devguru-1,62…