世界上最快最简单的排序——桶排序
今天又是无趣的寒假之中的一天,但是,我准备好好开始学习算法了,我是想每天至少学习一种算法,也不知道能不能坚持下来,反正先试试,万一呢?!
世界上有好多东西都是需要排序的
栗子one:给你一串在十以内的数字进行降序排列
最好就是在输入时就进行归类,可以设一个a[11]的数组,放进去,最后再通过循环输出
#include <stdio.h> int main() { int a[11],i,j,t; for(i=0;i<=10;i++) a[i]=0; //初始化为0 for(i=1;i<=5;i++) //循环读入5个数 { scanf("%d",&t); //把每一个数读到变量t中 a[t]++; //进行计数 } for(i=10;i>=0;i--) //依次判断a[0]~a[10] for(j=1;j<=a[i];j++) //出现了几次就打印几次 printf("%d ",i); getchar();getchar(); //这里的getchar();用来暂停程序,以便查看程序输出的内容 //也可以用system("pause");等来代替 return 0; }
*--i和i--在循环中是一样的效果,但是--i会稍微快一点
*时间复杂度事O(m+n),因为
for(i=0;i<=10;i++)进行了m次,
for(i=1;i<=5;i++)进行了n次,最后的双重循环进行了n+m次,所以是2(n+m)次,但是常数一般忽略怎么说这个桶排序只是最最最简单的一种,之后如果我学习到新的方法还会继续改进。PS:插点题外话,最近新型冠状病毒肆虐,全国的人们都进入了戒备状态。我也一样,刚开始真的是紧张的不得了,但是现在已经好多天了,心情也逐渐平复。真的真的看到了好多医生主动在春节期间去武汉进行支援,很感动,也很庆幸我们可以生活在这样一个如此强大的国家之中。相信在大家的共同努力下,我们会挺过来的,未来会更好!!!
相关推荐
randy0 2020-11-17
lixiaotao 2020-10-07
美丽的泡沫 2020-09-08
nongfusanquan0 2020-08-18
hang0 2020-08-16
earthhouge 2020-08-15
算法改变人生 2020-07-28
troysps 2020-07-19
Broadview 2020-07-19
chenfei0 2020-07-18
风吹夏天 2020-07-07
yangjingdong00 2020-07-05
数据与算法之美 2020-07-05
shawsun 2020-07-04
数据与算法之美 2020-07-04
要知道时间复杂度只是描述一个增长趋势,复杂度为O的排序算法执行时间不一定比复杂度为O长,因为在计算O时省略了系数、常数、低阶。实际上,在对小规模数据进行排序时,n2的值实际比 knlogn+c还要小。
Evankaka 2020-07-04
田有朋 2020-06-28