排序算法之计数排序

hujingnb hujingnb     2023-02-17     532

关键词:

概述

简单来说, 计数排序就是申请一个相同数据范围的数组空间, 计算每个数字各有几个,如此即可.

如一个数组为: [5, 2, 3, 4, 6, 3, 1, 0]

申请一个长度为6的数组(因为数组范围为0-5), 其中的值为: [1, 1, 1, 2, 1, 1, 1]

其数组意思就是, 0有1个,1有1个, 类推

最后将其拼装为排序好的数组即可

通过描述可以看出, 这个排序不适合范围过大的数组, 如果有一个长度为2的数组: [1, 9999999999999], 虽然数组很短, 但是用计数排序的话, 计数数组也是十分大的. 而对于数字范围小, 且重复数字很多的情况, 那就很好了.

技术分享图片

 

其时间空间复杂度如下:

技术分享图片

 

Java代码实现

好吧, 计数排序很简单, 简单Java代码实现:

技术分享图片

 

 

可以关注一下鄙人的公众号, 谢谢各位了!技术分享图片

经典算法之计数排序

...:http://blog.csdn.net/SunnyYoona/article/details/24551123一引言计数排序假设n个输入元素中的每一个都是介于0-k的整数,此处k为某个整数。当k等于O(n)时,计数排序的运行时间为Θ(n)。二基本思想计数排序的基本思想就是对每一个输... 查看详情

排序算法之计数排序

概述简单来说,计数排序就是申请一个相同数据范围的数组空间,计算每个数字各有几个,如此即可.如一个数组为:[5,2,3,4,6,3,1,0]申请一个长度为6的数组(因为数组范围为0-5),其中的值为:[1,1,1,2,1,1,1]其数组意思就是,0有1个,1有1个,类推... 查看详情

《糊涂算法》之八大排序——计数排序(代码片段)

📚八大排序算法合集——两万字,8张动图,450行代码。大厂面试必备。🌲配套源码地址:《八大排序》源码,提取码:5ehp哈喽,大家好,我是一条~今天给大家带来《糊涂算法》专栏的第二期... 查看详情

春招备战之排序算法

排序算法:650)this.width=650;"src="http://my.csdn.net/uploads/201207/17/1342514529_5795.jpg"alt="1342514529_5795.jpg"/>直接插入排序希尔排序选择排序堆帕西冒泡排序快速排序归并排序基数排序计数排序外排序排序总结算法直接排序算法:直接排序算... 查看详情

十大经典排序之:基数排序|计数排序(代码片段)

十大经典排序之:归并排序|桶排序基数排序基数排序原理算法实现例题计数排序计数排序原理算法实现例题基数排序基数排序原理今天的排序算法可能比之前的稍微难点。基数排序是一种非比较型整数排序算法,其... 查看详情

数据结构之八大排序算法(c语言实现)(代码片段)

排序文章目录排序排序的概念及其应用排序的概念排序的定义排序的稳定性排序在现实生活中的应用常见的排序算法常见排序算法的实现直接插入排序希尔排序选择排序堆排序冒泡排序冒泡排序的优化快速排序Hoare法快速排序时... 查看详情

数据结构和算法之排序总结(代码片段)

文章目录一、排序的概念及应用💦排序的概念💦排序的运用💦常见的排序算法二、常见排序算法的实现💦插入排序1、直接插入排序2、希尔排序💦选择排序1、直接选择排序2、堆排序💦交换排序1、冒泡... 查看详情

算法计数排序

参考博客:常用排序算法总结(二)计数排序countingsort  1.计数排序是一种非常快捷的稳定性强的排序方法,时间复杂度O(n+k),其中n为要排序的数的个数,k为要排序的数的组大值。计数排序对一定量的整数排序时候的速度非常快... 查看详情

基于桶的排序之基数排序以及排序方法总结(代码片段)

基于桶的排序之基数排序以及排序方法总结作者:Grey原文地址:博客园:基于桶的排序之基数排序以及排序方法总结CSDN:基于桶的排序之基数排序以及排序方法总结说明基于桶的排序有两种,分别是计数排序... 查看详情

排序算法--distributionsorting--分布排序[1]--countingsort--计数器排序(代码片段)

...的调整,因为不能把所有的元素放到同一个位置上。计数排序假设输入的元素都是0到k之间的整数。2.实现原理  为一组数在排序之前先统计这组数中其他数小于这个数的个数,则可以确定这个数的位置。例如要排序的数为74215... 查看详情

算法计数排序桶排序和基数排序详解(代码片段)

01.计数排序、桶排序与基数排序并不是所有的排序都是基于比较的,计数排序和基数排序就不是。基于比较排序的排序方法,其复杂度无法突破(nlogn)的下限,但是计数排序桶排序和基数排序是分布排序,他们是可以突破这个下限... 查看详情

重温基础算法内部排序之桶排序法(代码片段)

内部排序之桶排序法桶排序是计数排序的升级版,主要将它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:在额外空间充足的情况下,尽... 查看详情

重温基础算法内部排序之桶排序法(代码片段)

内部排序之桶排序法桶排序是计数排序的升级版,主要将它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:在额外空间充足的情况下,尽... 查看详情

为啥我的计数排序算法根本不排序?

】为啥我的计数排序算法根本不排序?【英文标题】:Whydoesmycountingsortalgorithmnotsortatall?为什么我的计数排序算法根本不排序?【发布时间】:2020-03-1820:30:55【问题描述】:#include<iostream>#include<vector>#include<algorithm>usi... 查看详情

基本排序系列之计数排序

                             简述计数排序   &n 查看详情

算法导论第八章__实现计数排序

计数排序:不须要比較就能得出排序的顺序__比如。本章的计数排序、基数排序、桶排序比較排序:须要进行比較才干得出排序的顺序__比如,本章的堆排序、高速排序(本质是插入排序)、插入排序代码清单:计数排序__完美演... 查看详情

排序算法的c++实现——计数排序(代码片段)

   任何比较排序算法的时间复杂度的上限为O(NlogN),不存在比o(nlgN)更少的比较排序算法。如果想要在时间复杂度上超过O(NlogN)的时间复杂度,肯定需要加入其它条件。计数排序就加入了限制条件,从而使时间复杂度为O(N... 查看详情

排序算法下——桶排序计数排序和基数排序(代码片段)

桶排序、计数排序和基数排序这三种算法的时间复杂度都为$O(n)$,因此,它们也被叫作线性排序(LinearSort)。之所以能做到线性,是因为这三个算法是非基于比较的排序算法,都不涉及元素之间的比较操作。1.桶排序(BucketSort... 查看详情