# 桶排序
def bucketSort(nums):
# 选择最大的数
max_num = max(nums)
# 创建一个元素全是0的列表,当做桶
bucket = [0] * (max_num + 1)
print('bucket:', bucket)
# 把所有元素的个数放入桶中与其值相等的下标对应的位置
# 即其值对应位置的元素的值为其在原列表中的个数
for num in nums:
bucket[num] += 1
print('bucket:', bucket)
# sort_nums存储排序好的元素
sort_nums = []
# 取出桶中的元素
for i in range(len(bucket)): # 下标i 其实就是原列表的值
if bucket[i] != 0:
# 下标i对应的值不为0的话,说明原列表存在i这个值,bucket[i]就是i在原列表的个数
for y in range(bucket[i]):
sort_nums.append(i)
return sort_nums
if __name__ == '__main__':
nums1 = [1,3,6,9,12,5,4]
sort_nums = bucketSort(nums1)