排序算法:桶排序

今天做了一个题,像我这样的废物还只能掌握一种排序算法,所以内道题理所当然的超时了,在看过书后,又学了一种排序算法:桶排序

也很简单,一起来看看吧

排序算法:桶排序_第1张图片

这个题的意思也就是让你把下面的数字按顺序排好,因为他的个数最大已经到达200000了,所以只能换一种排序方式

我选的是桶排序(这道题c++的选手也可以用sort,但是好像数据再大一点点就没办法用了)

先说一下桶排序的原理吧

以这道题为例

桶是什莫意思,他是用来记录数字的个数的,最多999个桶,第一个桶记录1的个数,第二个桶记录2的个数,以此类推......

然后按顺序依次输出

#include

int a[1000];
//装数字个数的桶
int v[1000];
int main (void)
{
    int n=0;
    int m=0;
    int w=0;
    int i=0,j=0;
    int max=0;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++)
    {
        scanf("%d",&w);
        //将数字装进对应的桶中
        v[w]++;
    }
 //从小到大输出
    for(i=1;i<=n;i++)
    { 
           //按桶中的个数输出数字  
        for(j=1;j<=v[i];j++)
        {
        printf("%d ",i);
            }
    }
    return 0;
 } 

这就是桶排序啦,是不是很简单呢,加油!!!

你可能感兴趣的:(排序算法,算法,数据结构)