桶排序---

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.hqwc.cn/news/586539.html

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

相关文章

设计模式之工厂方法模式精讲

工厂方法模式又叫虚拟构造函数&#xff08;Virtual Constructor&#xff09;模式或者多态性工厂&#xff08;Polymorphic Factory&#xff09;模式。工厂方法模式的用意是定义一个创建产品对象的工厂接口&#xff0c;将实际创建性工作推迟到子类中。 工厂模式可以分为简单工厂…

在ubuntu上搭建系统监控系统

大纲 数据生产方安装和运行验证 数据收集、存储和分发方下载和解压修改配置运行验证 数据消费方下载和运行验证新增数据源新增看板关联看板和数据源效果展现 参考资料 在一个监控系统中&#xff0c;一定会有“数据生产方”和“数据消费方”存在。“数据生产方”用于产出需要监控…

企业如何利用数字人员工,加速企业数字化发展?

元宇宙概念的兴起&#xff0c;为企业数字化转型提供了新的想象空间&#xff0c;各领域企业纷纷推出高辨识度、强互动性的数字人员工、数字代言人&#xff0c;以数字人短视频、数字人发布会、虚拟数字人直播、AI交互数字人互动等场景&#xff0c;加速企业数字化进程。 建发股份数…

基于小华例程3.2版本USB之usb_dev_cdc工程深入代码详解USB过程

打开工程首先看readme文件&#xff1a;&#xff08;官方的说明中&#xff0c;串口3和4不明确&#xff0c;根据代码和实测&#xff0c;确定CDC测试使用的是串口3&#xff0c;后文我会讲到为什么是串口3&#xff09;. 样例使用说明Date Author IAR MDK …

Visual Studio 2022报错c1083,win11解决办法

如果头文件报错&#xff0c;并且编译器报错是c1083&#xff0c;无法处理的时候&#xff0c;包括卸载重装也是无济于事的时候 此时可以采取一下办法进行修改 出现这个的主要原因是安装 Windows SDK 时版本出错&#xff0c;需要根据自己的 windows 版本选择安装对应版本的 Wind…

35---USB PHY---ULPI UTMI+ HSIC

视频链接 USB PHY硬件电路设计---ULPI & UTMI & HSIC 01_哔哩哔哩_bilibili USB PHY---ULPI & UTMI & HSIC 1、USB PHY基本介绍 芯片厂商开发了一些USB PHY芯片&#xff0c;可以把DP、DM上的差模信号转成共模信号。 USB PHY负责最底层的信号转换&#xff0…

智能资产管理:RFID技术与国产WMS系统的融合之路

随着信息技术的飞速发展&#xff0c;企业对于资产管理的需求也日益增长。传统的资产管理方法已无法满足现代企业的管理需求&#xff0c;因此&#xff0c;一种结合了RFID技术与国产WMS系统的智能资产管理方案应运而生。 RFID&#xff0c;即无线射频识别技术&#xff0c;通过无…

网络播放解码器 SIP-7102网络音频解码播放器

网络播放解码器 SIP-7102网络音频解码播放器 SIP-7102是一款支持SIP协议的网络音频解码播放器&#xff0c;具有10/100M以太网接口&#xff0c;其接收网络的音频数据&#xff0c;通过设备的DSP及放大电路&#xff0c;可以直接连接两路15W的扬声器。可以用于公共广播、报警系统、…

企业如何通过AARRR模型完成快速扩张?

在竞争激烈的市场环境中&#xff0c;企业要想实现持续的用户增长&#xff0c;就需要采用一套有效的策略和模型。AARRR模型→&#xff08;【1日1词】AARRR用户增长模型--互联网运营经典模型&#xff09;是一个帮助企业实现用户增长的有效方法。下面将详细阐述企业在营销运营过程…

macbook(m1) ubuntu下载,复制粘贴和国内镜像源配置

ubuntu下载使用 官网下载Ubuntu 22.04.4 LTS (Jammy Jellyfish) Daily Build 打开后根据电脑的架构选择安装包&#xff0c;想要下载其他版本也可在官网中自行搜索。 我安装时舍友说他安装的是22.04这个版本&#xff0c;我也就跟着他安装了 注意&#xff1a;下载的版本最好有…

汽车充电桩主板购买渠道汇总

随着充电桩设施的迅速普及&#xff0c;充电桩作为其中关键组件之一&#xff0c;市场需求不断增长。在互联网科技飞速发展的背景下&#xff0c;充电桩主板的采购渠道更加多元化&#xff0c;下面我们来探讨消费者、充电桩运营商和生产商可以从何处购买充电桩主板。 直接联系制造商…

通过python获取谷歌学术搜索结果

谷歌学术是重要的科研利器&#xff0c;搜索结果通常上千个&#xff0c;每次只能看几个&#xff0c;通过开源的接口&#xff0c;可以批量获取搜索结果&#xff0c;方便快速综合分析。 这里用到的库是scholary&#xff0c;可以指定获取多少个结果&#xff0c;每个结果是个dict&a…