• 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 计数,python 计数函数,python 科学计数法,python计数器,python 列表计数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、计数排序

计数排序(Counting sort)是一种稳定的排序算法

算法的步骤如下:
找出待排序的数组中最大和最小的元素
统计数组中每个值为i的元素出现的次数,存入数组C的第i项
对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)
反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1
当输入的元素是 n 个 0 到 k 之间的整数时,计数排序的时间复杂度为O(N+K),空间复杂度为O(N+K)。当K不是很大时,这是一个很有效的线性排序算法。

以下是测试代码:

    # c[i]表示data中值<=i 的元素个数
    for i in range(1, max+1):
        c[i] = c[i] + c[i-1]

    # 在将C中的元素倒着打印出来就是排序好的
    for j in xrange(len(data)-1, -1, -1):
        result[c[data[j]]-1] = data[j]
        c[data[j]] = c[data[j]] – 1

    return result

 

if __name__ == '__main__':

    #制造1000个0到100的数字

    print jishu([random.randint(0, 100) for i in range(1000)], 100)
</div>

二、基数排序

基数排序排序(英语:Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。

它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。
基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。

以下是一个测试用例:

    return data

 

if __name__ == '__main__':

    list = [random.randint(1, 99999999) for i in xrange(99)]  # 制造99个数据
    print jichu(list, 8)
</div>

</div>

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

  • python计数排序和基数排序算法实例

相关文章

  • python实现mysql的单引号字符串过滤方法
  • python基于property()函数定义属性
  • python实现逻辑回归的方法示例
  • python中string模块各属性以及函数的用法介绍
  • Python实现各种排序算法的代码示例总结
  • Python2.x中str与unicode相关问题的解决方法
  • 简单讲解Python中的数字类型及基本的数学计算
  • Python简单日志处理类分享
  • Python脚本实现网卡流量监控
  • Python算法之栈(stack)的实现

文章分类

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

最近更新的内容

    • python实现博客文章爬虫示例
    • 使用Python内置的模块与函数进行不同进制的数的转换
    • 跟老齐学Python之总结参数的传递
    • python实现多线程的两种方式
    • python 实现文件的递归拷贝实现代码
    • 详解Python 数据库 (sqlite3)应用
    • windows系统中python使用rar命令压缩多个文件夹示例
    • 轻松实现python搭建微信公众平台
    • Python中动态获取对象的属性和方法的教程
    • Python算法应用实战之队列详解

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

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