• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python算法学习之桶排序算法实例(分块排序)

python算法学习之桶排序算法实例(分块排序)

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python算法学习之桶排序算法实例(分块排序)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

def insertion_sort(A):
    """插入排序,作为桶排序的子排序"""
    n = len(A)
    if n <= 1:
        return A
    B = [] # 结果列表
    for a in A:
        i = len(B)
        while i > 0 and B[i-1] > a:
            i = i - 1
        B.insert(i, a);
    return B

def bucket_sort(A):
    """桶排序,伪码如下:
    BUCKET-SORT(A)
    1  n ← length[A] // 桶数
    2  for i ← 1 to n
    3    do insert A[i] into list B[floor(nA[i])] // 将n个数分布到各个桶中
    4  for i ← 0 to n-1
    5    do sort list B[i] with insertion sort // 对各个桶中的数进行排序
    6  concatenate the lists B[0],B[1],...,B[n-1] together in order // 依次串联各桶中的元素

    桶排序假设输入由一个随机过程产生,该过程将元素均匀地分布在区间[0,1)上。
    """
    n = len(A)
    buckets = [[] for _ in xrange(n)] # n个空桶
    for a in A:
        buckets[int(n * a)].append(a)
    B = []
    for b in buckets:
        B.extend(insertion_sort(b))
    return B

if __name__ == '__main__':
    from random import random
    from timeit import Timer

    items = [random() for _ in xrange(10000)]

    def test_sorted():
        print(items)
        sorted_items = sorted(items)
        print(sorted_items)

    def test_bucket_sort():
        print(items)
        sorted_items = bucket_sort(items)
        print(sorted_items)

    test_methods = [test_sorted, test_bucket_sort]
    for test in test_methods:
        name = test.__name__ # test.func_name
        t = Timer(name + '()', 'from __main__ import ' + name)
        print(name + ' takes time : %f' % t.timeit(1))
</div>

</div>

您可能想查找下面的文章:

相关文章

  • python实现用于测试网站访问速率的方法
  • Python写入数据到MP3文件中的方法
  • Python中使用第三方库xlrd来读取Excel示例
  • Python标准库06之子进程 (subprocess包) 详解
  • wxpython 学习笔记 第一天
  • Python THREADING模块中的JOIN()方法深入理解
  • Python3写入文件常用方法实例分析
  • 使用Python对Access读写操作
  • python实现的一只从百度开始不断搜索的小爬虫
  • Python中输出ASCII大文字、艺术字、字符字小技巧

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 简单讲解Python中的字符串与字符串的输入输出
    • 使用python实现strcmp函数功能示例
    • python中global用法实例分析
    • Python中尝试多线程编程的一个简明例子
    • Python的一些用法分享
    • 浅析Python中元祖、列表和字典的区别
    • 从局部变量和全局变量开始全面解析Python中变量的作用域
    • 打印出python 当前全局变量和入口参数的所有属性
    • python访问抓取网页常用命令总结
    • 使用Python抓取模板之家的CSS模板

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有