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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
Python中线程编程之threading模块的使用详解
Jun 23 Python
深入理解python多进程编程
Jun 12 Python
Python实现简单过滤文本段的方法
May 24 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
对python中字典keys,values,items的使用详解
Feb 03 Python
Python根据成绩分析系统浅析
Feb 11 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
Django使用Profile扩展User模块方式
May 14 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
python简单验证码识别的实现过程
Jun 20 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
php实现简单洗牌算法
2013/06/18 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
Yii2使用$this-&gt;context获取当前的Module、Controller(控制器)、Action等
2017/03/29 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
2013/01/08 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
Python模块相关知识点小结
2020/03/09 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
城市创卫标语
2014/06/17 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
学术会议通知范文
2015/04/15 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP