【排序】桶排序 bucket sort

2021-03-02 07:27

阅读:457

  1. 思想:
    将待排序集合中处于同一值域的元素存入同一个桶中,
    这样的话,集合中的元素就被拆分成多个桶,再对每个桶中的元素排序,再将有序的桶放回原集合中。
     一句话:通过“分配”和“收集”实现排序。
    Notes:
    (1).桶排序是对计数排序的改进。计数排序是给每一个元素都开辟空间,记录出现次数,以达到排序。
    所以,对于数值过大的元素或者浮点数,计数排序就不能很很好的解决。
    所以应用桶排序,可以很好的解决,根据元素的分布利用一个hash函数将值域相同的元素放到一个桶。
    (2).桶排序的时间复杂度O(N)~O(N*logN),N为元素个数。
    (3).桶排序适用于元素均匀分布的情况。

  2. 算法过程:
    (1).搭建桶的结构,使用单链表;
    (2).hash函数定义:即如何确定元素是否在同一值域中,

           (value * len) / (max_value + 1);
    value:当前计算的元素
    len:待排序集合的长度
    max_value:集合中数值最大的元素
    (3).桶中元素排序:链表中元素的插入;
    (4).出桶,排序输出。


评论


亲,登录后才可以留言!