计数排序动漫与代码

2023-11-18

前言

从复杂度较高的,冒泡排序,选择排序,插入排序(不包含二分插入排序) ,这些时间复杂度为 O(N^2) 的排序,再到归并排序,快速排序,堆排序,这些时间复杂度为 O(nlogn)的排序,还有么有更快的?
答有!它来了它来了,它带着一波动画共计160帧画面走来了!问它为啥160帧,只因我是一帧一帧改的…奥利给 熬夜脱发又又一次。

计数排序

计数排序是一种,不用比较元素间大小的 高效排序,原因是它采用,关联数组元素下标的方式关联,因为元素的索引下标天然就是有序的。
例如: 待排序数组 { 3, 7, 5}
找出 元素最大值,然后建一个可以包含 3~7 区间的数组,对应索引值 ,存入,那此时的数组只要从头遍历出来即可
在这里插入图片描述
注意: 上图 索引 0 ,1, 2 都白白浪费了 ,因为数组最小元素是3,所以这里有优化空间,后面的代码会有体现的。

动漫

在这里插入图片描述

核心代码

   @Test
    public void counrtSort () {
        int[] arr = {2, 11, 1, 8, 7, 18, 18, 6, 5, 3, 20, 4};
        System.out.println(Arrays.toString(arr));
        int max = arr[0];
        int min = arr[0];
        // 选出最大值与最小值,找出被排序元素的区间
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            } else if (arr[i] < min) {
                min = arr[i];
            }
        }
        // 建立 min~~~至 max的 区间,并关联索引位置,成为计数数组
        int[] counrtArr = new int[max - min + 1];
        for (int i = 0; i < arr.length; i++) {
            counrtArr[arr[i] - min]++;
        }

        // 把计数数组变形,变成一个排名数组
        for (int i = 1; i < counrtArr.length; i++) {
            counrtArr[i] += counrtArr[i - 1];
        }
        int[] rs = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            rs[counrtArr[arr[i] - min] - 1] = arr[i];
            counrtArr[arr[i] - min]--;
        }
        System.out.println(Arrays.toString(rs));
    }

复杂度

  • 遍历找出最大值最小值 ,N次。
  • min~~~至 max的 区间,并关联索引位置,N次。
  • 遍历计数数组,max - min + 1次,设为K次。
  • 把计数数组变形,变成一个排名数组 ,遍历K次。
  • 最终遍历源数组,N次。

结果: 3N+2K
去常数项,最终结果
N+K

优缺点

  • 优点:
    时间复杂度相比较于传统比较大小排序,更快
  • 缺点:
    1 当数组最大值和最小值差距过大时,不适合排序
    2 当数组元素不是整数,不适合排序

对于次局限性,桶排序算法作出了弥补。 桶排序传送门:
桶排序图解与代码

赠人玫瑰,手有余香,你的点赞,备受鼓舞!

如果你能看到这里了,不如点赞关注一波,我会认真分享每一篇博文。大家共同成长。

我的公众号:茄子的笔记

更多分享可见:

在这里插入图片描述:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计数排序动漫与代码 的相关文章

  • 全国青少年软件编程等级考试标准(正式级)

    简介 说明本标准由中国电子学会科普培训与应用推广中心和北京大学信息科学技术学院共同制定 由全国青少年电子信息科普创新联盟标准工作组参与开发 由中国电子学会普及工作委员会审核通过 适用于由中国电子学会举办的全 说明 本标准由中国电子学会科普培

随机推荐

  • Python 汇总两张excel表格:分解excel复杂表头,比对汇总表和子表异同项目,生成仅含相同项的汇总表和填充异同项目的子表

    在工作中遇到需要将子表项目添加到汇总表中 存在以下特点 工作中遇到需要将子表项目汇总到汇总表中 存在以下特点 1 表头复杂 存在合并的单元格 考虑分解单元格并填充空白单元格 2 子表中存在汇总表没有的项目 考虑将子表分别标示异同项目 创建辅
  • QGIS编译

    一 准备工作 1 下载QGIS源码 最新版本的QGIS源码需要从git上下载 最新的发布版是2 0 下载地址见下 https github com qgis QGIS tree release 2 0 打开网页 在右侧有个Download
  • Nginx与tomcat直接连接

    ng端口和目录的配置 Nginx用户及组 用户 组 window下不指定 在linux下可改为root user nobody 工作进程 数目 根据硬件调整 通常等于CPU数量或者2倍于CPU worker processes 1 错误日志
  • Swift 数据类型

    在我们使用任何程序语言编程时 需要使用各种数据类型来存储不同的信息 变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中 在声明变量时也可指定它的数据类型 所有变量都具有数据类型 以决定能够存储哪种数据 内置数据类型 Swift 提
  • BZOJ3425 Poi2013 Polarization

    最小值一定是n 1 每条边贡献一个答案 显然 首先我们要证明这道题的一个性质 最优解一定具有如下形式 以树的某一个重心 可以是任意一个 为根 根的每一个子树里的所有边要么都指向根 要么都指向叶子 引理 首先对于一棵树 我们把所有边的朝向反转
  • 圈圈叫你玩usb读书笔记

    本文是读圈圈教你玩usb的第一章节 usb基础的读书笔记 根据这篇内容可以理解usb的端点 管道等概念 usb的插头和插座 记录2点 usb2 0的四根线是电源和地的触点比D D1长 当插入的时候电源和地先接通 然后才是数据 当拔出的时候是
  • 极光笔记

    Sendgird发布的 2022 Global Messaging Engagement Report 中揭示了世界各地的用户更喜欢用哪种方式与品牌互动 结论是 电子邮件仍然是第一名 短信紧随其后 4800多名受访者中 有18 的人将电子邮
  • c++ 循环队列

    ifndef CIRCLEQUEUE H define CIRCLEQUEUE H include
  • 彻底搞懂CSS层叠上下文、层叠等级、层叠顺序、z-index

    前言 最近 在项目中遇到一个关于CSS中元素z index属性的问题 具体问题不太好描述 总结起来就是当给元素和父元素色设置position属性和z index相关属性后 页面上渲染的元素层级结果和我预想的不一样 根据自己之前的理解 也没找
  • 关于华为OD机考那些事(必刷题和部分真题概览)

    关于华为OD机考那些事 必刷题和部分真题概览 目录 一 背景概述 二 关于机考 1 刷题链接 2 题型介绍 3 常见考点 4 网站必刷题 5 刷题小贴士 三 真题概览 持续补充 一 背景概述 本文旨在说明华为OD机考要点 收集机考真题 为后
  • 2021 WAIC大会「AI 时代的云原生」系列活动

    转发一则活动消息 欢迎新老朋友一起来交流 2021年世界人工智能大会一触即发 各项筹备工作已经陆续接近尾声 2021 WAIC大会 AI 时代的云原生 系列活动议程正式官宣 AI 时代的云原生 系列活动 主要由AI时代的云原生 论坛 和谁一
  • py(for 循环练习—最大公约数和最小公倍数)

    输入两个数值 求两个数的最大公约数和最小公倍数 最小公倍数 num1 num2 最大公约数 num1 num2 map int input 输入两个数字 split 输入两个数字 min num min num1 num2 min函数求出两
  • Python爬虫JS解密详解,学会直接破解80%的网站(一)!!!

    文章目录 1 网页查看 2 有道翻译简单实现源码 3 JS解密 详解 4 python实现JS解密后的完整代码 4 1 实现效果 5 JS解密后完整代码升级版 5 1 实现效果 CSDN独家福利降临 25个爬虫项目宝藏教程 你值得拥有 Py
  • 对于Logcat的使用示例

    主要用于示范logcat的信息筛选方法 logcat的信息杂乱 为了找到我们要找的信息 比如调试或者输出信息 我们一般通过关键字搜索和信息的等级 后者较少使用
  • 第五人格亚服服务器不稳定,第五人格外服玩家“翻脸”?3个原因,让他们不太接受新屠夫...

    在第五人格博士上线一段时间之后 外服玩家也已经体验到了新角色博士的乐趣 不过比起来刚开始放出设计图时的一片叫好 有不少玩家都疯狂吐槽表示很讨厌博士的存在 甚至还有玩家希望它能从游戏中退出去 到底什么原因导致国服反应平平 但是外服玩家的态度与
  • mvn install的时候出现的Please refer to dump files (if any exist) [date].dump

    出现问题 Please refer to Users wanghaohao Downloads workspace BigDataOss target surefire reports for the individual test res
  • 【网络编程】学习成果day1(理论)

    1 联合体实现判断大小端存储 linux linux study NETbc cat homework1 c include
  • kali2.0 Metasploit连接postgres数据库

    sudo u postgres createuser demo P 创建用户demo sudo u postgres psql 进入数据库 postgres password demo 设置密码 sudo u postgres create
  • CK-GW06-E00与CODESYS TCP通信

    CK GW06 E00与CODESYS TCP通信 CK GW06 E00是一款支持标准工业通讯协议Modbus TCP的网关控制器 方便用户集成 到 PLC 等控制系统中 本控制器提供了网络 POE 供电和直流电源供电两种方式 确保用 户
  • 计数排序动漫与代码

    前言 从复杂度较高的 冒泡排序 选择排序 插入排序 不包含二分插入排序 这些时间复杂度为 O N 2 的排序 再到归并排序 快速排序 堆排序 这些时间复杂度为 O nlogn 的排序 还有么有更快的 答有 它来了它来了 它带着一波动画共计1