今天又是无趣的寒假之中的一天,但是,我准备好好开始学习算法了,我是想每天至少学习一种算法,也不知道能不能坚持下来,反正先试试,万一呢?!
世界上有好多东西都是需要排序的
栗子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:插点题外话,最近新型冠状病毒肆虐,全国的人们都进入了戒备状态。我也一样,刚开始真的是紧张的不得了,但是现在已经好多天了,心情也逐渐平复。真的真的看到了好多医生主动在春节期间去武汉进行支援,很感动,也很庆幸我们可以生活在这样一个如此强大的国家之中。相信在大家的共同努力下,我们会挺过来的,未来会更好!!!
来源:https://www.cnblogs.com/-113/p/12231688.html