计数排序 布满荆棘的人生 2022-07-14 01:26 315阅读 0赞 计数排序,他的主要目的是对整数排序并且会比普通的排序算法性能更好。 1. 初始化一个计数数组,大小是输入数组中的最大的数。 2. 遍历输入数组,遇到一个数就在计数数组对应的位置上加一。例如:遇到5,就将计数数组第五个位置的数加一。 3. 把计数数组直接覆盖到输出数组(节约空间)。 /* * 计数排序 * 这种算法只适用于已知所排序元素范围的排序操作 * 有一定的局限性 * 对于计数,一般只能是正数,因为数组的下标是不能为负的 */ #include <iostream> #include <time.h> #define size 10 using namespace std; void printsort(int p[],int n) { for(int i=0;i<n;i++) cout<<p[i]<<" "; } int findmax(int p[],int n) { int max=p[0]; for(int i=1;i<n;i++) { if(p[i]>max) max=p[i]; } return max; } void countersort(int p[],int n,int q[],int m) { for(int i=0;i<n;i++) { if(p[i]>0) q[p[i]-1]++; } cout<<"计数数组:"<<endl; int num1=0; for(int i=0;i<m;i++) { cout<<q[i]<<" "; num1++; if(num1%10==0) cout<<endl; } cout<<endl; int num=0; for(int i=0;i<m;i++) { if(q[m]!=0) { for(int j=0;j<q[i];j++) p[num++]=i+1; } } } int main() { int p[size]={0}; srand((unsigned)time(NULL));//保证每次生成的数不一样 cout<<"需排序数组:"<<endl; for(int i=0;i<size;i++) //随机生成10个大于0的数 { p[i]=rand()%100+1; cout<<p[i]<<" "; } cout<<endl; int size2=findmax(p,size);//得到计数数组的大小 int q[size2]={0}; countersort(p,size,q,size2); cout<<"排序后:"<<endl; printsort(p,size); return 0; } ![Center][] [Center]: /images/20220714/171c4bc9ed5e4ac3b43b3c1030a45cd0.png
相关 计数排序 数排序是非比较排序,桶排序的一种 时间复杂度:O(n),空间复杂度O(n) ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_1... 一时失言乱红尘/ 2024年04月18日 08:20/ 0 赞/ 150 阅读
相关 计数排序 计数排序 冒泡、选择、插入、归并、快速、希尔、堆排序,都是基于比较的排序,平均时间复杂度最低是O(nlogn)。 计数排序、桶排序、基数排序,都不是基于比较的排序,它们 痛定思痛。/ 2023年02月20日 10:43/ 0 赞/ 57 阅读
相关 排序算法——计数排序 排序算法——计数排序 > 计数排序是一个非基于比较的排序算法。它的优势在于在对一定范围内的整数排序时,快于任何比较排序算法。 这是一种牺牲空间换取时间的做法,当O(k)> 绝地灬酷狼/ 2022年12月23日 06:57/ 0 赞/ 372 阅读
相关 【排序】计数排序 为什么记录这个 在做 [leetcode 561 题][leetcode 561]的时候,第三种解法,看了很久才明白,后来理解实际上是做了一次计数排序。 这个题,直接看 缺乏、安全感/ 2022年11月20日 02:00/ 0 赞/ 298 阅读
相关 计数排序 转载自:[http://www.cnblogs.com/eaglet/archive/2010/09/16/1828016.html][http_www.cnblogs.com Bertha 。/ 2022年08月11日 08:00/ 0 赞/ 283 阅读
相关 计数排序 计数排序,他的主要目的是对整数排序并且会比普通的排序算法性能更好。 1. 初始化一个计数数组,大小是输入数组中的最大的数。 2. 遍历输入数组,遇到一个数 布满荆棘的人生/ 2022年07月14日 01:26/ 0 赞/ 316 阅读
相关 计数排序 对于一个int数组,请编写一个计数排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例: [1,2,3,5,2, 系统管理员/ 2022年06月09日 01:36/ 0 赞/ 308 阅读
相关 计数排序 计数排序 算法描述:是一种通过计数来达到排序的方法。 ![20180326152550965][] 1.选出数组的最大值k,创建一个k+1长度的数组coun 素颜马尾好姑娘i/ 2022年05月28日 00:20/ 0 赞/ 327 阅读
相关 计数排序 / 计数排序:统计小于等于该元素值的元素的个数i,于是该元素就放在目标数组的索引i位(i≥0)。 计数排序基于一个假设,待排序数列的 ゝ一纸荒年。/ 2021年12月18日 05:07/ 0 赞/ 398 阅读
相关 计数排序 计数排序: 假设n个输入元素中的每一个都是在0~区间内的一个整数,其中k为某个整数。当k=O(n)是,排序时间为O(n). 基本思想:对每个输入元素x,确定小于x元素的 淡淡的烟草味﹌/ 2021年09月23日 03:22/ 0 赞/ 516 阅读
还没有评论,来说两句吧...