episode53:桶排序

Posted 统计学知识分享平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了episode53:桶排序相关的知识,希望对你有一定的参考价值。

文章链接:https://blog.csdn.net/liangjiubujiu/article/details/82813014

桶排序(bucket sort)假设输入数据服从均匀分布。平均情况下他的时间代价是O(n)。计数排序假设输入数据分布于一个小区间的整数,而桶排序则假设输入是一个随机过程产生的,该过程将元素均匀独立地分布于[0,1)区间上。1.桶排序的基本思想 桶排序将[0,1)区间划分为n个相同的大小的子区间,这些子区间被称为桶。然后将n个输入元素分别放入各自的桶中。因为输入时均匀独立的,所以一般不会有很多数同时落在一个桶中的情况。这样,我们想对各个桶中的数据进行排序,然后遍历每个桶,按照次序把各个桶中的元素列出来即可。一个桶排序的示例如图:

  1. def bucketSort(nums):

  2. # 选择一个最大的数

  3. max_num = max(nums)

  4. # 创建一个元素全是0的列表, 当做桶

  5. bucket = [0]*(max_num+1)

  6. # 把所有元素放入桶中, 即把对应元素个数加一

  7. for i in nums:

  8. bucket[i] += 1

  9. # 存储排序好的元素

  10. sort_nums = []

  11. # 取出桶中的元素

  12. for j in range(len(bucket)):

  13. if bucket[j] != 0:

  14. for y in range(bucket[j]):

  15. sort_nums.append(j)

  16. return sort_nums

  17. nums = [5,6,3,2,1,65,2,0,8,0]

  18. print bucketSort(nums)

  19. """



以上是关于episode53:桶排序的主要内容,如果未能解决你的问题,请参考以下文章

线性排序:桶排序计数排序

线性排序:桶排序计数排序

桶排序和基数排序

排序算法——桶排序

排序5:桶排序

图解排序 8/10 - 桶排序