计数排序

【计数排序】十大排序算法之计数排序 【计数排序】十大排序算法之计数排序,是稳定的排序(属于桶排序的一种)。 阅读详情
1,。假设要排序的数组为 A = {1,0,3,1,0,1,1}
这里最大值为3,最小值为0,那么我们创建一个数组C,长度为4.
然后一趟扫描数组A,得到A中各个元素的总数,并保持到数组C的对应单元中。
比如0 的出现次数为2次,则 C[0] = 2;1 的出现次数为4次,则C[1] = 4
 

由于C 是以A的元素为下标的,所以这样一做,A中的元素在C中自然就成为有序的了,这里我们可以知道 顺序为 0,1,3 (2 的计数为0)
然后我们把这个在C中的记录按每个元素的计数展开到输出数组B中,排序就完成了。
也就是 B[0] 到 B[1] 为0  B[2] 到 B[5] 为1 这样依此类推。

这种排序算法,依靠一个辅助数组来实现,不基于比较,算法复杂度为 O(n) ,但由于要一个辅助数组C,所以空间复杂度要大一些,由于计算机的内存有限,这种算法不适合范围很大的数的排序。


public static void Sort(int[] A, int k)
        {
            Debug.Assert(k > 0);
            Debug.Assert(A != null);


            int[] C = new int[k + 1];


            for (int j = 0; j < A.Length; j++)
            {
                C[A[j]]++;
            }


            int z = 0;


            for (int i = 0; i <= k; i++)
            {
                while (C[i]-- > 0)
                {
                    A[z++] = i;
                }
            }
        }

七星棋牌顶级运营产品全开源修复版源码教程:6端支持,200+子游戏玩法,完整搭建指南(含代码解析) 让您从源码下载到本地运行一步到位!此外,文中还将附带详细代码解析与操作步骤,即便没有开发经验,也能轻松完成二开与定制。数据库是棋牌游戏中极为关键的组成部分,用于存储用户信息、乐豆余额、游戏记录、提现申请等数据。以下是部分核心数据表结构示例,便于存储用户信息与游戏记录。AI模块能够控制游戏中的胜率,常用于调节玩家体验。防沉迷功能旨在限制未成年人游戏时间。的完整搭建流程,特别适合。首先,获取七星棋牌源码。本教程将为您详细讲解。 阅读详情

相关推荐

一文读懂GAN, pix2pix, CycleGAN和pix2pixHD

本文翻译、总结自朱俊伟的线上报告,主要讲了如何用机器学习生成图片。 来源:Games2018 Webinar 64期 :Siggraph 2018优秀博士论文报告 人员信息 主讲嘉宾 姓名:朱俊彦(Jun-Yan Zhu) 现状:麻省理工学院博士后(PostDoc at MIT),计算机科学与人工智能实验室(Computer Science and Artificial In...

gdymind的博客 6万+

排序之计数排序

计数排序是一种线性时间复杂度的排序算法,适用于处理整数且整数的范围不大的情况。它是基于这样的思想:对于每个元素,我们可以计算出它在排序后数组中的位置,然后将元素放到该位置。计数排序的基本步骤如下:以下是计数排序的简单理解:将每个元素放到它在排序后数组中的位置上,我们可以使用遍历:给定一个长度为 n 的数组 arr ,其中的元素都是“非负整数”由于 的各个索引天然有序,因此相当于所有数字已经排序好了。接下来,我们遍历 ,根据各数字出现次数从小到大的顺序填入 arr 即可: 但是假设输入数据是商品对象,

Small_entreprene的博客 1177

OLED的字模提取(保姆级)---基于PCtoLCD2013

做为一个刚刚开始接触编程不久的白菜,这个OLED想做一个信息显示,可是商家给我的例程里就是88,816两种字体的格式,我的屏幕是0.91寸的8*16的字体显示上感觉特别丢丢儿小,我就想整个大的,哎,只怪直接学习习惯不好,总是学一半,绕了好大一圈,才搞好,想写一篇博客,时刻提醒踏实学习,第一次写博客,小白一枚,勿喷。。 OLED屏幕驱动程序功能 我们对Markdown编辑器进行了一些功能拓展与语法支...

qq_44886611的博客 7782

计数排序详解

计数排序的重点是:将序列中的元素作为键存储在额外的数组空间中,通过遍历来排序

weixin_44713306的博客 1万+

Tessent Atpg系列 第七章 Running ATPG Patterns -- 如何书写proc文件

本篇文章是记录Tessent scan ATPG系列 本文并非是对userguide的完全翻译,而是自己对userguide的理解,此外,有部分比较深入的内容可能需要后续实验验证。本系列并不对tessent scan做过多描述。 请勿随意转载: 优快云 博主: ciscomonkey一种是在使用tessent scan之后使用ATPG 另一种是使用第三方工具,如snps的DFTC之后使用tessent的ATPG。 这里我们仅仅介绍without tessent scan之后tessent ATPG:对于t

ciscomonkey的博客 7698

基于大疆TSDK与Pix4D的热红外数据工程化处理:从RJPG到温度正射影像的完整工作流

本文详细介绍了基于大疆TSDK与Pix4D的热红外数据工程化处理完整工作流。通过Python脚本自动化解析RJPG格式的热红外图像,提取并转换其中的原始辐射数据为包含真实温度信息的TIFF文件,再结合Pix4Dmapper进行批量拼接,最终生成可直接用于GIS分析的温度正射影像图。该流程解决了手动处理效率低下、参数校准复杂等难题,实现了从原始数据到定量分析成果的高效、准确、可重复生产。

weixin_29161785的博客 378

计数排序和稳定的计数排序

计数排序不是基于元素比较,而是利用数组下标来确定元素的正确位置。计数排序是一个稳定的排序算法。当输入的元素是 n 个 0到 k 之间的整数时,时间复杂度是O(n+k),空间复杂度也是O(n+k),其排序速度快于任何比较排序算法。当k不是很大并且序列比较集中时,计数排序是一个很有效的排序算法。 算法思路 计数排序的算法思路是定义一个大小为序列最大值-最小值的大小的数组,遍历每一个元素,将其映射到数组...

weixin_42559610的博客 3197

087、DAMO-YOLO Efficient-RepGFPN:重参数化加皇后融合加黄金分割的创新 Neck

DAMO-YOLO的Efficient-RepGFPN创新性Neck结构摘要: 该结构通过三重创新提升目标检测性能: 重参数化卷积:训练时多分支(3x3卷积+1x1卷积+BN分支)提升特征表达能力,推理时合并为单路3x3卷积保证效率; 皇后融合机制:采用可学习权重对不同尺度特征进行自适应加权融合,而非简单相加,通过Softmax归一化权重实现特征选择; 黄金分割连接:优化特征金字塔层间连接方式,按比例分配相邻层特征权重(如P3:P5≈0.618:0.382),减少冗余连接噪声。 实验表明,该结构有效解决了传

ai技术增长的博客 102

排序算法 计数排序(普通计数排序、桶排序)

将区间[0, 1)划分为n个大小相等的子区间(桶),每桶大小1/n:[0, 1/n), [1/n, 2/n), [2/n, 3/n),…计数排序的基本思想是对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素的个数(此处并非比较各元素的大小,而是通过对元素值的计数和计数值的累加来确定)。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)。

qq_36511401的博客 1万+

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

【AI智能体】Spring AI Tool 从使用到实战详解

Spring AI Tool

congge 5866

Java实现计数排序

1 问题描述 给定一组数据,请使用计数排序,得到这组数据从小到大的排序序列。 2 解决方案 2.1比较计数排序 下面算法的时间复杂度为O(n^2),空间复杂度为O(n)。此方法对于任意一组数据均可排序。 package com.liuzhen.practice; public class Main { public void comparisonCountingSort(int...

南 墙 1万+

10、智慧变电站 - 加载vue大屏元素(整体效果)

这一篇文章非常简单,但是也非常出效果阅读前面几篇文章,都可以看到有顶部、左侧、右侧的面板,主要我不会录gif图片,大屏元素面板还有一些动态加载的效果。 vue的transition标签 Vue 提供了 transition 的封装组件,可以给任何元素和组件添加进入/离开过渡;在进入/离开的过渡中,会有 6 个 class 切换:v-enter 、v-enter-active 、v-enter-to 、v-leave 、v-leave-active 、v-leave-to。我们正好使用这个特性来达到面板进入

github_39988036的博客 1041

比较计数排序和分布计数排序

比较计数排序 针对排序列表中的每一个元素,算出列表中小于该元素的元素个数,并把结果记录在一张表中。这个“个数”指出了该元素在有序列表中的位置。例如一个列表A中有一个元素为10,而小于10的元素个数有5个,那么10应该排在第六个位置上,也就是A[5](下标从0开始)。这个算法称为比较计数排序。 下面来个图形象的说明。 A[0…5] 62 31 84

淡然坊 4734

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java计数排序

计数排序的基本思想就是:加入输入一个数x,如果我们可以找到比x小的数有几个,那么就可以直接将x放入到对应的输出数组的位置。 比如输入一个数x=12,发现在输入的数据中,比12小的有4个,那么毫无疑问12就该排在第五位。 废话不多说,代码中有详细的思路讲解: import java.util.Arrays; /** * 计数排序2 * 中间数组 通过数组下标来表示原始数组的值,来统计每个元素出...

qichangjian的博客 3825

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计数排序 C++

知识点 C++产生随机数 算法系列-计数排序 计数排序步骤 数组开辟空间:计算大小,初始化 遍历排序数组,对计数数组赋值 遍历计数数组,对原数组排序 时间:O(n),空间:O(m),m是最大值与最小值的差,可能是n #include<iostream> #include<stdlib.h>//随机数使用 #include<time.h> #inclu...

haiki66的博客 583

计数排序就是这么容易

文章目录前言1.计数排序(Counting Sort)1.1.计数排序(Counting Sort)2.原理2.1.步骤2.2.实例题目3.代码3.1.代码4.扩展阅读4.1.局限性 前言 声明:参考来源互联网,有任何争议可以留言。站在前人的肩上,我们才能看的更远。 本教程纯手打,致力于最实用教程,不需要什么奖励,只希望多多转发支持。 欢迎来我公众号,希望可以结识你,也可以催更,微信搜索:JavaPub 有任何问题都可以来谈谈 ! 计数排序是比较容易的排序算法,但是对数量级较小的整数排序很.

JavaPub 657

比较计数排序与分布计数排序

比较计数排序 针对排序列表中的每一个元素,算出列表中小于该元素的元素个数,并把结果记录在一张表中。这个“个数”指出了该元素在有序列表中的位置。例如一个列表A中有一个元素为10,而小于10的元素个数有5个,那么10应该排在第六个位置上,也就是A[5](下标从0开始)。这个算法称为比较计数排序。 下面来个图形象的说明。 A[0…5] 62 31 84 96 19 47 count[] 0 0 0 0 0 0 首先用于计数的数组清零。 A[0…5] 62 31 84 96 19 47 count[] 3 0 1

zj的博客 942

java 计数排序_计数排序就是这么容易

前言声明:参考来源互联网,有任何争议可以留言。站在前人的肩上,我们才能看的更远。本教程纯手打,致力于最实用教程,不需要什么奖励,只希望多多转发支持。 欢迎来我公众号,希望可以结识你,也可以催更,微信搜索:JavaPub有任何问题都可以来谈谈 !计数排序是比较容易的排序算法,但是对数量级较小的整数排序很实用。1.计数排序(Counting Sort)1.1.计数排序(Counting Sort)计数...

weixin_36231030的博客 165

【排序】——计数排序

【排序】——计数排序 1、应用场景: 计数排序可以看作是一种特殊的桶排序。 当要排序的n个数据,所处范围并不大,我们就可以把数据划分成n个桶。每个桶内的数据值都是相同的,桶内不需要再排序。 比如高考的分数系统 满分900分,最低0分。因此数据范围只有0-900,但是考生却很多有几十万。此时我们要对这几十万个考生的分数进行排名,就可以使用到计数排序。 2、一个简化的例子说明: 1、假设只有8个考生,分数在0到5之间,我们把这8个考生的分数放到一个数组里面,记为分数数组arr: int[] arr = {2,

weixin_41605945的博客 399
上一篇: 桶排序
下一篇: bloom filter
database_system
博客等级 码龄15年 3粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值