计数排序

作者&投稿:奚娴 (若有异议请与网页底部的电邮联系)
~ 计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中.
作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数.

1.找出待排序的数组中最大和最小的元素;
2.统计数组中每个值为i的元素出现的次数,存入数组C的第i项;
3.对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);
4.反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1.

排序类别:非交换排序
是否是稳定排序:稳定
是否是原地排序:否
时间复杂度:O(n+k)
空间复杂度:O(k)

它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法.
当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序
基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序

计数排序是一个稳定的排序算法.
当输入的元素是n个0到k之间的整数时,时间复杂度是O(n+k),空间复杂度也是O(n+k),其排序速度快于任何比较排序算法.
当k不是很大并且序列比较集中时,计数排序是一个很有效的排序算法.
计数排序的缺点是当最大值最小值差距过大时,不适用计数排序,当元素不是整数值,不适用计数排序.

计数排序对输入的数据有附加的限制条件:
1、输入的线性表的元素属于有限偏序集S;
2、设输入的线性表的长度为n,|S|=k(表示集合S中元素的总数目为k),则k=O(n).
在这两个条件下,计数排序的复杂性为O(n).

计数排序的基本思想是对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素的个数(此处并非比较各元素的大小,而是通过对元素值的计数和计数值的累加来确定).一旦有了这个信息,就可以将x直接存放到最终的输出序列的正确位置上.例如,如果输入序列中只有17个元素的值小于x的值,则x可以直接存放在输出序列的第18个位置上.当然,如果有多个元素具有相同的值时,我们不能将这些元素放在输出序列的同一个位置上,因此,上述方案还要作适当的修改.

假设输入的线性表L的长度为n,L=L1,L2,..,Ln;线性表的元素属于有限偏序集S,|S|=k且k=O(n),S={S1,S2,..Sk};则计数排序可以描述如下:
1、扫描整个集合S,对每一个Si∈S,找到在线性表L中小于等于Si的元素的个数T(Si);
2、扫描整个线性表L,对L中的每一个元素Li,将Li放在输出线性表的第T(Li)个位置上,并将T(Li)减1.


从一到二十的数字是怎么排序的?
1到20的数字是:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20。汉字写的是:零,一,二,三,四,五,六,七,八,九,十,十一,十二,十三,十四,十五,十六,十七,十八,十九,(一十一,一十二,一十三,一十四,一十五,一十六,一十七,一十八,一十...

数字排序规律是什么?
规律:-3 *1 +3 1、11和8是剪掉3个数值。2、8和8是乘以1。3、8和14是增加3个数值。所以后面的排列应该是11、11、14开始无限循环。

数字序号怎样从低级到高级排列?
数字序号的级别顺序:一、第一层为汉字数字加顿号,例如:“一、”“二、”“三、”。二、第二层为括号中包含汉字数字,例如:“(一)”“(二)”“(三)”。三、第三层为阿拉伯数字加下脚点,例如:“1、”、“2、”、“3、”。四、第四层为括号中包含阿拉伯数字,例如:“(1)”“(...

数位是如何排列的?
你说的是数位吗?常用的,从小到大数位排序是:个,十,百,千,万,十万,百万,千万,亿,十亿,百亿,千亿,兆 具体数位顺序表:个:10的零次方 十:10的一次方 百:10的二次方 千:10的三次方 万:10的四次方 十万:10的五次方 百万:10的六次方 千万:10的七次方 亿:10的八次方 十亿:10的...

数量单位从小到大怎么排序?
个)、十、百、千、万、十万、百万(兆)、千万、亿、十亿、百亿、千亿都是计数单位。数位是指写数时,把数字并列排成横列,一个数字占有一个位置,这些位置,都叫做数位。从右端算起,第一位是“个位”,第二位是“十位”,第三位是“百位”,第四位是“千位”,第五位是“万位”等等。

数量单位从小到大排序是什么 数量单位从小到大排序是怎么样的呢_百度知...
1、中国数字单位有:由小到大依次为一、十、百、千、万、亿、兆、京、垓、秭、穰、沟、涧、正、载、极、恒河沙、阿僧祇、那由他、不可思议、无量大数。万以下是十进制,万以后则为万进制,即万万为亿,万亿为兆、万京为垓。2、数字很大的数,一般我们用科学记数法表示,例如9050000000000;我们...

1到10的数是怎么样排序的啊?
1、学会顺数与倒数,学会顺接数、倒接数。2、在游戏中感知倒数与顺数的规律,开拓幼儿的思维发展。3、情感上:使幼儿在心情愉悦的情况下,积极主动的学习,体验数学活动的快乐,并感受集体活动的乐趣。4、知道按事物不同的特征进行排序会有不同的结果,初步了解排序的可逆性。5、通过各种感官训练培养...

把下面的数按顺序排一排
排序后的数字为:1,3,5,7,9。当我们面对一组数字并需要按照从小到大的顺序排列它们时,我们可以采用一种简单的比较逻辑来实现这一目标。这种逻辑基于数学中的大小比较原则,即如果第一个数字小于第二个数字,则第一个数字应该在第二个数字之前;反之,如果第一个数字大于第二个数字,则第一个数字...

数字单位排序,例如个、十、百、千、万…… 帮忙往后排列出来,谢谢_百度...
我们常用的单位多是以下数个 百 .10^2 .100 千 .10^3 .1,000 万 .10^4 .10,000 亿 .10^8 .100,000,000 兆 .10^12 .1,000,000,000,000 以下可能已少用了 京 .10^16 垓 .10^20 杼 .10^24 穰 .10^28 沟 .10^32 涧 .10^36 正 .10^40 载 .10^44 极 .10^48 极...

数字大小排列顺序是怎么样的?
数字大小排列顺序题的难点在于既要比较大小,又要按规律排序。将一连串的数字比较转化成了两两比较,然后排序。从左至右,用第二个数字和第一个比较,大就写在右边(优胜),小就写在左边。从左至右,不断用后面的数字比较草稿纸上最右边的数字,大了就放右边,小了与草稿纸上的前一位数字再比,...

木垒哈萨克自治县13519703702: 计数排序 - 搜狗百科
栾泰安舒:[答案] 1.计数是一个重复加(或减)1的数学行为,通常用于算出对象有多少个或放置想要之数目个对象(对第一个对象从一算起且将剩下的对象和由二开始的自然数做一对一对应).此外,计数亦可以被(主要是被儿童)使用来学习数字名称和数字系统的...

木垒哈萨克自治县13519703702: 什么是计数排序 -
栾泰安舒: 只听说过基数排序的.“基数排序法”(radix sort)则是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作...

木垒哈萨克自治县13519703702: 请问计数单位从小到大的排位顺序应该是怎么样的? -
栾泰安舒: 个、十、百、千、万、十万、百万、千万、亿、十亿、百亿、千亿 、兆、十兆、百兆、千兆、京、十京、百京、千京、垓、十垓、百垓、千垓、秭、十秭、百秭、千秭、穰、十穰、百穰、千穰、沟、十沟、百沟、千沟、涧、十涧、百涧、千涧、正、十正、百正、千正、载、十载、百载、千载、极、十极、百极、千极、恒河沙、十恒河沙、百恒河沙、千恒河沙、阿僧祗、十阿僧祗、百阿僧祗、千阿僧祗、那由他、十那由他、百那由他、千那由他、不可思议、十不可思议、百不可思议、千不可思议、 无量大海、十无量大海、百无量大海、千无量大海、大数、十大数、百大数、千大数

木垒哈萨克自治县13519703702: 计数排序c语言 -
栾泰安舒: 这个程序还有点问题, 1. 动态数组申请 2. 访问越界 3. 输出错误 应该就这三个问题了吧,简单的调试了下. 1. 在第9行出现,比较好解决.使用malloc内存分配函数直接解决,注意,在使用完成后需要用free()去释放这段内存,否则会出现内...

木垒哈萨克自治县13519703702: 什么是计数,测量结果,排序,标号? -
栾泰安舒: 计数就是数数,像一层楼;测量是用尺子量(也可以用其他工具);排序是排下来,如2008年;标号如,502空调车.我也刚学这些!

木垒哈萨克自治县13519703702: 计数单位从小到大排列是个位、十位、百位、千位.______.(判断对错) -
栾泰安舒:[答案] 计数单位从小到大排列是个、十、百、千…,个位、十位、百位、千位是数位. 故答案为:*.

木垒哈萨克自治县13519703702: 写数的时候,把计数单位按照一定的顺序排列起来,他们所占的位置叫做______. -
栾泰安舒:[答案] 把计数单位按照一定的顺序排列起来,它们所占的位置叫数位; 故答案为:数位.

木垒哈萨克自治县13519703702: 把计数单位按照一定的顺序排列起来,它们所占的位置叫______,一个数字所占的______不同,表示的数的______也不同. -
栾泰安舒:[答案] 把计数单位按照一定的顺序排列起来,它们所占的位置叫数位,一个数字所占的数位不同,表示的数的计数单位也不同. 故答案为:数位,数位,计数单位.

木垒哈萨克自治县13519703702: 计数和测量,标号和排序的区别是什么? -
栾泰安舒: 区别: 测量一般是指长度的测量,计数一般指记录的数字,比如本子多少本,时间花了多少等等.标号一般是人为规定的,比如学号.排序一般是指排大小,比如年月份. 具体区别: 计数是一个重复加或减1的数学行为,通常用于算出对象有...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网