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


Posted in Python onDecember 18, 2013

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

# -*- coding: utf-8 -*-
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))
Python 相关文章推荐
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
Python3+Selenium+Chrome实现自动填写WPS表单
Feb 12 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
Mar 18 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
python算法学习之基数排序实例
Dec 18 #Python
python算法学习之桶排序算法实例(分块排序)
Dec 18 #Python
python计算最大优先级队列实例
Dec 18 #Python
python计算最小优先级队列代码分享
Dec 18 #Python
python查找第k小元素代码分享
Dec 18 #Python
python获取beautifulphoto随机某图片代码实例
Dec 18 #Python
python使用urllib2模块获取gravatar头像实例
Dec 18 #Python
You might like
PHP实现把数字ID转字母ID
2013/08/12 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
python中的多重继承实例讲解
2014/09/28 Python
Python实现网站文件的全备份和差异备份
2014/11/30 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
python 中的int()函数怎么用
2017/10/17 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python机器学习之决策树算法
2017/12/22 Python
python 构造三维全零数组的方法
2018/11/12 Python
python五子棋游戏的设计与实现
2019/06/18 Python
python爬虫之自制英汉字典
2019/06/24 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
家居饰品店创业计划书
2014/01/31 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
canvas实现贪食蛇的实践
2022/02/15 Javascript