001.桶排序

1.桶排序是一种利用空间换取时间的排序方式 .

   桶排序是非比较排序,无法解决一些必须比较的排序问题.

2.原理:

        将数组中的N个元素分到M个桶中,再以每个桶为单位各自进行排序(可以使用其他排队方法,也可以递归使用桶排序).

如图:

3.计数排序和桶排序的区别:

        计数排序是特殊的桶排序,当桶个数M取最大时,计数排序就是桶排序(通俗理解就是每个桶只装相同的元素的桶排序就是计数排序).

4.时间复杂度:

        以快排为例,假设每个桶中元素分配均匀:

        ①第一阶段

                将所有元素分入桶内,需要遍历数列,故第一阶段时间复杂度 = O_{\left ( N \right )}

        ②第二阶段

                快排时间复杂度 = O_{NlogN}

                共有m个桶,每个桶中元素个数 K= \frac{N}{M}

                一个桶快排的时间复杂度= O_{\left ( KlogK \right )}= O_{\left ( \frac{N}{M} log\frac{N}{M}\right )}

                所有桶快排的时间复杂度 = M\cdot O_{\left ( \frac{N}{M}log\frac{N}{M} \right )}=O_{\left (Nlog\frac{N}{M} \right )}

                第二阶段时间复杂度= O_{\left ( Nlog\frac{N}{M} \right )}

        综上,桶排序时间复杂度= O_{\left ( N\left ( log\frac{N}{M}+1 \right ) \right )}

        注:当桶个数M趋近于元素个数N时,log_{\left ( \frac{N}{M} \right )}趋近于0,所以所有桶的时间复杂度趋近于0,

                此时,桶排序的时间复杂度 = 计数排序时间复杂度= O_{\left ( N \right )}.

5.空间复杂度:

        空间复杂度= O_{\left ( M+N \right )}

                M:待排数列所占空间;

                N:桶所占空间.

6.使用范围:非负数据;较为集中数据.

7.优点:

        ①桶越多,时间效率越高(由时间复杂度第二阶段可以看出,M越大,log_{\left ( \frac{N}{M} \right )}越小,时间复杂度越低);

        ②桶排序是稳定的.

8.缺点:

        ①桶越多,空间复杂度越高(由空间复杂度可以看出,M越大,空间复杂越高);

        ②处理的数据不能太分散.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值