Python全系列 教程
3567个小节阅读:5929.7k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
桶排序是计数排序的升级版。是通过多个桶来存储多个数据。
注意
- 数据尽量服从均匀分布
- 桶内排序可以使用多种方式:冒泡、插入、快速等等...
xxxxxxxxxx
# 插入排序的算法
def insertion_sort(arr):
for i in range(1,len(arr)):
# 循环子序列的时候,就要反着来!
for j in range(i,0,-1):
# 如果后面一个数,大于前面的一个数,就交换位置
if arr[j]<arr[j-1]:
arr[j],arr[j-1]=arr[j-1],arr[j]
return arr
# 桶排序
def bucket_sort(nums, bucket_size = 5):
maxVal, minVal = max(nums), min(nums)
# 数据分为 bucketCount 组,这一个是根据每组的数量决定的
bucket_count = (maxVal - minVal) // bucket_size + 1
buckets = [[] for i in range(bucket_count)] # 二维桶
# 利用函数映射将各个数据放入对应的桶中
for num in nums:
buckets[(num - minVal) // bucket_size].append(num)
# 清空 nums
nums.clear()
# 对每一个二维桶中的元素进行排序
for bucket in buckets:
insertion_sort(bucket) # 假设使用插入排序
nums.extend(bucket) # 将排序好的桶依次放入到 nums 中
return nums
if __name__ == '__main__':
arr = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print(arr)
tmp = bucketSort(arr)
print(tmp)
实时效果反馈
1. 关于桶排序算法,说法正确的是?
A 桶排序会分配新数组来存储每个元素出现的次数
B 桶排序必须使用计数排序辅助排序
C 桶排序分配的桶,每个存储元素最多为10个
D 桶排序的数据,均匀分布才会提高效率
答案
1=>D