最快快快的桶排序(1956年)
Posted 算法零基础学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最快快快的桶排序(1956年)相关的知识,希望对你有一定的参考价值。
很久没来写算法了.......还好大家没有抛弃我。谢谢大家
今天介绍一个超级简单的简化了的排序算法—桶排序,该算法由E.J.Issac和R.C.Singleton提出。应付一些简单的排序还是很不错的哟!
借用一维数组的形式来实现这个算法,例如用输入0-m之间的n个数字,进行排序,按从大到小输出结果。
算法如下:
简要说明一下:这里设置了m为1000,n是需要输入的。
后面的getchar()...缓一缓。(没啥大的作用)
精彩的地方在于假设你输入5个数。20 63 96 960 206 首先数组的每一个元素都是0,之后你输入20,对应20的位置上的元素的数值就会加1,有几个就加几个,这就是利用了数组下标作为输入的数字的值。
之后在输出的时候,你要注意啦,算法的最精彩的地方就在这里啦,看到 j 没有从1开始,避免了0的那些东西。。。。。。
这只是一个简化了的排序算法,后面的时候会进一步学习,谢谢大家。可以敲一下,感受算法的魅力。
这个数组的时间复杂度为O(m+n)很快啦!
#include<stdio.h>
int main(){
int a[1001],i,j,t,n;
for(i=0;i<=1000;i++){
a[i]=0;
}
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&t);
a[t]++;
}
for(i=1000;i>=0;i--)
for(j=1;j<=a[i];j++){
printf("%d ",i);
}
getchar();
getchar();
return 0;
}
以上是关于最快快快的桶排序(1956年)的主要内容,如果未能解决你的问题,请参考以下文章