工作的原理是将数组分到有限数量的桶里,每个桶再个别排序。桶排序不是比较排序,它不受O(nlgn)下限的影响。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间O(n)
一个最简单情形的实现
# python
num_list = [5, 3, 5, 2, 8]
def bucket_sort(num_list):
bucket_length = 10
bucket = [0 for i in range(0, bucket_length + 1)]
for item in num_list:
bucket[item] += 1
for i in range(0, bucket_length + 1):
for j in range(0, bucket[i]):
if bucket[i]:
print i,
bucket_sort(num_list)
网友评论