1.1 桶排序(简陋版)

#桶排序(简版)

这是一种对于n个数据排序的方式

这个算法是假设了有n个桶,编号便是0-*(n-1),共n个桶来装数据
每当出现了一个数,我们就在对应编号的桶中放置一个标志
查看数据时只要看每个桶中有多少数据即可

//比如我们对0-10的数进行排序

    int a[11] ;
    int i,j,t ; 

    for(i = 10 ; i >= 0 ; i++){
        a[i] = 0 ; //讲每个桶的原始值设为0
    }

    for(i =1 ; i <=5 ; i++){
        //循环读入数据,我们这里就设读入五个吧
        scanf("%d" , &t);
        a[t]++ ; //相关计数
    }

    for(i = 10 ; i >= 0 ; i++){
        //依次判断a[0]到a[10]
        for(j =1 ; j<=a[i];j++){
            printf("d",i) ; //打印,出现几次打印几次
        }
    }

在这个简化版的桶排序中,有一个缺陷:我们并不知道排序后的数据原本对应哪个数据源
而且,桶排序还非常浪费空间。当我们排序的范围扩大而数据总量不变之后,明显会有很多无用"空桶"(比如我们记录1-1000的数值,但是出现的数字只有1和2)
简言之,桶排序只适合进行简单的排序分类,对于更复杂、更高要求的排序,我们还需要更好的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值