当前位置:首页python > 正文

Python 排序算法:桶排序(Bucket Sort)

作者:野牛程序员:2025-12-22 11:06:33python阅读 2002
Python 排序算法:桶排序(Bucket Sort)
# /*
# Python 排序算法:桶排序(Bucket Sort)
# --------------------------------------------------------
# 概念:
# 桶排序是一种基于“分桶思想”的线性时间排序方法,
# 将数据分布到多个桶中,再分别排序,最后合并。
#
# 特点:
# 1) 平均时间复杂度 O(n)
# 2) 稳定排序
# 3) 需要额外空间
# */

# --------------------------------------------------------
# 桶排序算法实现(已修复 bucket_count 类型问题)
def bucket_sort(arr, bucket_size=5):
    if len(arr) < 2:
        return arr

    # 最大、最小值
    min_val = min(arr)
    max_val = max(arr)

    # 修复:确保桶数量为整数
    bucket_count = int((max_val - min_val) / bucket_size) + 1

    # 创建空桶
    buckets = [[] for _ in range(bucket_count)]

    # --------------------------------------------------------
    # 将数据放入桶中
    for num in arr:
        index = int((num - min_val) / bucket_size)
        buckets[index].append(num)

    # --------------------------------------------------------
    # 对每个桶排序并合并
    sorted_arr = []
    for bucket in buckets:
        if bucket:
            bucket.sort()
            sorted_arr.extend(bucket)

    return sorted_arr

# --------------------------------------------------------
# 示例演示
data = [0.42, 4.2, 3.5, 2.3, 0.12, 5.0, 3.14, 2.78]

print("原始数据:", data)

sorted_data = bucket_sort(data, bucket_size=1)

print("桶排序结果:", sorted_data)

# --------------------------------------------------------
# 要点总结:
# 1) 桶排序依赖数据分布均匀;
# 2) 桶内部可使用任意排序方法;
# 3) 对浮点数排序效果更佳;
# 4) bucket_count 需要为整型。
# */

# 原始数据: [0.42, 4.2, 3.5, 2.3, 0.12, 5.0, 3.14, 2.78]
# 桶排序结果: [0.12, 0.42, 2.3, 2.78, 3.14, 3.5, 4.2, 5.0]


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • Python 排序算法:桶排序(Bucket Sort)
  • 相关推荐

    最新推荐

    热门点击