桶排序---

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据库系统工程师】软考2024年5月报名流程及注意事项

2024年5月软考数据库系统工程师报名入口&#xff1a; 中国计算机技术职业资格网&#xff08;http://www.ruankao.org.cn/&#xff09; 2024年软考报名时间暂未公布&#xff0c;考试时间上半年为5月25日到28日&#xff0c;下半年考试时间为11月9日到12日。不想错过考试最新消息…

分享一种快速移植OpenHarmony Linux内核的方法

移植概述 本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者&#xff0c;介绍一种借助三方芯片平台自带 Linux 内核的现有能力&#xff0c;快速移植 OpenHarmony 到三方芯片平台的方法。 移植到三方芯片平台的整体思路 内核态层和用户态层 为了更好的解释整个内核…

Unity 使用 IL2CPP 发布项目

一、为什么用 IL2CPP Unity的IL2CPP&#xff08;Intermediate Language to C&#xff09;是一个编译技术&#xff0c;它将C#代码转换为C代码&#xff0c;然后再编译成平台相关的二进制代码。IL2CPP提供了几个优点&#xff0c;特别是在性能和跨平台部署方面。以下是IL2CPP的一些…

未来的智能起航:探索AI技术的创业新天地

在科技飞速发展的当今世界&#xff0c;人工智能&#xff08;AI&#xff09;已经成为一个热门话题。不再是科幻小说中的概念&#xff0c;AI正逐渐融入我们的生活和工作中&#xff0c;开创了全新的创业市场和机会。人工智能&#xff08;AI&#xff09;的飞速发展不仅引领了科技的…

iOS苹果签名共享签名是什么以及如何获取?

哈喽&#xff0c;大家好呀&#xff0c;咕噜淼淼又来和大家见面啦&#xff0c;最近有很多朋友都来向我咨询共享签名iOS苹果IPA共享签名是什么&#xff0c;针对这个问题&#xff0c;淼淼来解答一下大家的疑惑并告诉大家iOS苹果ipa共享签名需要如何获取。 现在苹果签名在市场上的…

boost库搜索引擎

文章目录 0. 前言1. 搜索引擎原理2. 技术栈和项目环境3. 正排索引和倒排索引3.1 正排索引3.2 倒排索引3.3 模拟查找 4. 获取数据源5. 数据清洗5.1 保存路径5.2 解析文件提取标题提取内容构造url 5.4 保存内容 6. 建立索引6.1 建立正排索引6.2 建立倒排索引6.3 构建索引 7. 搜索…

为什么高校都在做数字化转型?智慧校园建设该如何落地?

作为高校的多年合作伙伴&#xff0c;很多时候我们在与各大高校信息处的老师对接和联系的时候&#xff0c;常常听到部分老师在头疼学校的信息化管理&#xff0c;从而提出需求。归纳下来&#xff0c;高校的信息管理主要面对着三大难题&#xff1a; 第一&#xff0c;资源管理效率…

精彩解读:短链接应用全方位探究

title: 精彩解读&#xff1a;短链接应用全方位探究 date: 2024/4/2 17:44:50 updated: 2024/4/2 17:44:50 tags: 短链接定义映射算法原理简洁美化优势工作流程解析安全隐私保护商业营销应用技术趋势发展 1. 短链接的定义和原理 短链接是一种将长网址转换为短网址的服务&#…

SeLinux 的编译逻辑

在Android 11 init进程对Selinux的处理一文中&#xff0c;我们知道&#xff0c;在init进程对Selinux的处理过程中&#xff0c;会将precompiled_sepolicy或者动态编译相关目录下的cil文件得到的compiled_sepolicy写入给内核。那么precompiled_sepolicy文件和cil文件是从哪里来的…

自己动手写数据库:基于哈希的静态索引设计

数据库设计中有一项至关重要的技术难点&#xff0c;那就是给定特定条件进行查询时&#xff0c;我们需要保证速度尽可能快。假设我们有一个 STUDENT 表&#xff0c;表中包含学生名字&#xff0c;年龄&#xff0c;专业等字段&#xff0c;当我们要查询给定年龄数值的记录&#xff…

如何一键展示全平台信息?Python手把手教你搭建自己的自媒体展示平台

前言 灵感源于之前写过的Github中Readme.md中可以插入自己的js图片和动态api解析模块&#xff0c;在展示方面十分的美观&#xff1a; 这方面原理可以简化为&#xff0c;在Markdown中&#xff0c;你可以使用HTML标签来添加图像&#xff0c;就像这样&#xff1a; <tr><…

轻松设置Facebook自动隐藏评论和删除评论功能

Facebook作为海外营销的最大流量平台之一&#xff0c;是很多跨境卖家争夺的市场&#xff0c;希望可以通过Facebook这个全球性的平台来推广自己的产品或服务。身处这个竞争激烈的市场&#xff0c;任何一条负面评论或不当言论出现在你的品牌页面上都可能影响到品牌形象&#xff0…

晶核新手必备攻略,干货满满!

晶核游戏以其独特的玩法和丰富的内容吸引着众多玩家。然而&#xff0c;对于一些追求效率和资源的玩家来说&#xff0c;单开游戏往往难以满足他们的需求。多开游戏成为了一个不错的选择&#xff0c;它能帮助玩家更快地获取资源&#xff0c;提升账号实力。下面将为大家分享一些晶…

ardupilot开发 --- 远程标识 篇

1. wifi协议 https://zhuanlan.zhihu.com/p/660568077 AP 无线接入点 路由器STA 站点 接入路由器的终端SSID 标识符 无线网络的名称信标祯 Beacon AP通过广播Beacon祯来告诉想要接入者(STA)无线网络的信息&#xff0c;如SSIDWLAN数据帧 Wi-Fi网络中传输数据时所使用的数据帧格…

Docker部署Nexus Maven私服并且实现远程访问Nexus界面

目录 ⛳️推荐 1. Docker安装Nexus 2. 本地访问Nexus 3. Linux安装Cpolar 4. 配置Nexus界面公网地址 5. 远程访问 Nexus界面 6. 固定Nexus公网地址 7. 固定地址访问Nexus ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&am…

Linux:基本指令篇

文章目录 前言1.ls 指令2.pwd命令3.cd 指令4.touch指令5.mkdir指令&#xff08;重要&#xff09;6.rmdir指令 && rm 指令&#xff08;重要&#xff09;7.man指令&#xff08;重要&#xff09;8.cp指令&#xff08;重要&#xff09;9.mv指令&#xff08;重要&#xff09…

【THM】Passive Reconnaissance(被动侦察)-初级渗透测试

介绍 欢迎来到网络安全模块的第一个房间,该模块涵盖: 1.被动侦察 2.主动侦察 3.Nmap实时主机发现 4.Nmap基本端口扫描 5.Nmap高级端口扫描 6.Nmap后端口扫描 7.协议和服务器 8.协议和服务器2 9.网络安全挑战 在这个房间里,在我们定义被动侦察和主动侦察之后,我们…

友思特方案 | 构建缤纷:可调谐光源的荧光成像的应用

导读 生物荧光分析常常伴随使用多种荧光染料的需求。结合多通道光源技术与高性能成像设备&#xff0c;友思特可调谐光源荧光检测成像方案&#xff0c;以其灵活的系统组成&#xff0c;满足了丰富的荧光检测应用需求。 生物荧光分析技术 激发荧光成像技术是研究生物学过程的一种…

Python基于微博的大数据舆论情感分析、微博大数据舆论分析可视化系统

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

无需注册即可使用 ChatGPT;Poe 创始人:大模型幻觉是创业公司的机会丨RTE 开发者日报 Vol.176

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、…