• 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

python算法学习之计数排序实例

def _counting_sort(A, B, k):
    """计数排序,伪码如下:
    COUNTING-SORT(A, B, k)
    1  for i ← 0 to k // 初始化存储区的值
    2    do C[i] ← 0
    3  for j ← 1 to length[A] // 为各值计数
    4    do C[A[j]] ← C[A[j]] + 1
    5  ▷ C[i]包含等于i的元素个数
    6  for i ← 1 to k // 求计数和,确定<=各值的元素数
    7    do C[i] ← C[i] + C[i-1]
    8  ▷ C[i]包含小于或等于i的元素个数
    9  for j ← length[A] downto 1
    10   do B[C[A[j]]] ← A[j] // 将A[j]值放到对应位置
    11      C[A[j]] ← C[A[j]] - 1 // 避免元素相同时覆盖同一位置

    T(n) = θ(n)

    Args:
        A (Sequence): 原数组
        B (Sequence): 结果数组
        k (int): 值上限,假定了所有元素介于[0,k]
    """
    len_c = k + 1
    C = [0] * len_c
    for a in A:
        C[a] = C[a] + 1
    for i in range(1, len_c):
        C[i] = C[i] + C[i-1]
    for a in A[::-1]:
        B[C[a]-1] = a
        C[a] = C[a] - 1

def counting_sort(A):
    """假定A数组所有元素都介于[0,len(A)-1]"""
    B = [0] * len(A)
    _counting_sort(A, B, len(A) - 1)
    return B

if __name__ == '__main__':
    import random, timeit

    items = range(10000)
    random.shuffle(items)

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

    def test_counting_sort():
        print(items)
        sorted_items = counting_sort(items)
        print(sorted_items)

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

</div>

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

相关文章

  • Python计算回文数的方法
  • Python的多态性实例分析
  • python登录pop3邮件服务器接收邮件的方法
  • python strip()函数 介绍
  • python中字典dict常用操作方法实例总结
  • Python利用Nagios增加微信报警通知的功能
  • Python的Flask框架标配模板引擎Jinja2的使用教程
  • python基础教程之popen函数操作其它程序的输入和输出示例
  • Python自动化测试ConfigParser模块读写配置文件
  • python解析xml文件操作实例

文章分类

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

最近更新的内容

    • 在Python的while循环中使用else以及循环嵌套的用法
    • Python isinstance函数介绍
    • easy_install python包安装管理工具介绍
    • 浅谈python新手中常见的疑惑及解答
    • Pycharm学习教程(6) Pycharm作为Vim编辑器使用
    • python操作sqlite的CRUD实例分析
    • Python中对象迭代与反迭代的技巧总结
    • python实现分析apache和nginx日志文件并输出访客ip列表的方法
    • Python使用urllib模块的urlopen超时问题解决方法
    • python读取csv文件示例(python操作csv)

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

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