桶排序

  1. 桶排序

桶排序

  • 定义:

    • 桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。(On^2)
  • 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def bucketSort(nums, n):
# 选择一个最大的数
if max(nums) > len(nums):
n = max(nums)
else:
n = len(nums) + 1
mid = max(nums) // n
if mid == 0:
mid = 1
# 创建一个元素全是0的列表, 当做桶
bucket = [[] for i in range(n + 1)]
# 把所有元素放入桶中
for i in nums:
bucket[int(i / mid)].append(i)
print(bucket)
sort_nums = []
# 取出桶中的元素
for j in range(len(bucket)):
if len(bucket[j]) != 0:
# 使用递归继续桶排序
if len(bucket[j]) >= 2 and len(set(nums)) != 1:
bucket[j] = bucketSort(bucket[j], n)
# 取出排序好的元素
for y in bucket[j]:
sort_nums.append(y)
return sort_nums

nums = [5, 6, 3, 2, 1, 2, 0, 8, 0, 65]
print(bucketSort(nums, 5))

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zoubinbf@163.com

×

喜欢就点赞,疼爱就打赏