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代理抓取并验证使用多线程实现
May 03 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
python 字典修改键(key)的几种方法
Aug 10 Python
python 列表递归求和、计数、求最大元素的实例
Nov 28 Python
用Python PIL实现几个简单的图片特效
Jan 18 Python
Python File(文件) 方法整理
Feb 18 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
解决python对齐错误的方法
Jul 16 Python
详解Python yaml模块
Sep 23 Python
浅谈Python numpy创建空数组的问题
May 25 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
PHP计数器的实现代码
2013/06/08 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
文本框的字数限制功能jquery插件
2009/11/24 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
Python实现视频下载功能
2017/03/14 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python实现按行分割文件
2019/07/22 Python
详解python播放音频的三种方法
2019/09/23 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
python实例化对象的具体方法
2020/06/17 Python
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
村级换届选举方案
2014/05/10 职场文书
用电申请报告范文
2015/05/18 职场文书
学术会议开幕词
2016/03/03 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
Python实现照片卡通化
2021/12/06 Python