基数排序

  • 前言

    • 这就是整个排序算法的最后一篇了,再深入的后来提出的排序算法基本上是基于这8中基本的排序算法,不做过多赘述。
  • 概述
    • 这是完全不同于之前的排序理念的一种排序方式,它是非基于比较的整形数据排序算法。
    • 基本原理是将整数按照位数切割为不同的数字,然后按照位数比较。
    • 这种排序不一定只适合整数,有些数据格式有内含整数的可能性。
  • 算法思路
    • 把待比较的所有整数统一化为同样的数位长度,数位不足前面补0,然后从最低位开始,依次排序,显然,按照这个步骤,待排序到最后一位数据一定有序。
  • 算法评价

    • 复杂度分析

      排序名称 最好情况 最坏情况 平均情况
      基数排序 O(nlog2n) O(nlog2n) O(nlog2n)
    • 稳定性
      • 算法稳定。
# -*- coding:UTF-8 -*-
"""
本模块实现了一维整形数的基数排序
"""
def RadixSort(data=[1, 2, 3, 4, 5]):def getMaxBit(data):'''求出最大数的位数:param data::return:'''maxData = max(data)bitsNum = 0while maxData:bitsNum += 1maxData //= 10return bitsNumdef getDigit(number, n):'''取number第n位数字:param number::param n::return:'''p = 1while n > 1:n -= 1p *= 10return number // p % 10length = len(data)bucket = [0]*lengthfor d in range(1, getMaxBit(data)+1):count = [0]*10for i in range(length):count[getDigit(data[i], d)] += 1for i in range(1, 10):count[i] += count[i-1]for i in range(0, length)[::-1]:k = getDigit(data[i], d)bucket[count[k] - 1] = data[i]count[k] -= 1for i in range(0, length):data[i] = bucket[i]print(data)return Noneif __name__ == '__main__':testData = [50, 123, 456, 187, 4, 11, 100]RadixSort(testData)

具体可以查看我的github。

排序算法-08基数排序(python实现)相关推荐

  1. 【代码刷题】排序算法总结(python实现)

    排序算法总结(Python实现) 算法介绍 算法分类 相关概念 1. 冒泡排序(Bubble Sort) 1.1 思想 1.2 python实现 1.3 复杂度 1.4 稳定性 2. 快速排序(Qui ...

  2. 经典排序算法总结与Python实现(下)

    在之前的博客经典排序算法总结与Python实现(上)中已经讨论过插入.冒泡.选择.快排.谢尔排序.这篇博客主要完成剩下的几个排序算法. 排序算法 时间复杂度(最好) 时间复杂度(最差) 时间复杂度(平 ...

  3. 经典排序算法之基数排序(C语言版)

    排序算法之基数排序的C语言实现. #include "math.h" #include "stdio.h"/* * 基数排序 2016-04-18 23:43: ...

  4. 数据结构之排序算法:基数排序

    排序算法:基数排序 思维导图: 基数排序的定义: 分配和收集: 基数排序的性能: 基数排序应用: 思维导图: 基数排序的定义: ps: n表示线性表长度 d表示每个元素的位数,例324有三位数字 r表 ...

  5. php排序算法算法,PHP排序算法之基数排序(Radix Sort)实例详解

    本文实例讲述了PHP排序算法之基数排序(Radix Sort).分享给大家供大家参考,具体如下: 基数排序在<大话数据结构>中并未讲到,但是为了凑齐八大排序算法,我自己通过网络学习了这个排 ...

  6. 经典排序算法总结与Python实现(上)

    本篇博客中的有序都是指的升序,降序情况稍微改改就出来了. 排序算法 时间复杂度(最好) 时间复杂度(最差) 时间复杂度(平均) 空间复杂度 稳定性 插入排序 O(n)O(n)O(n) O(n2)O(n ...

  7. 【基数排序】十大排序算法之基数排序

    [基数排序]十大排序算法之基数排序,是属于[稳定]的排序. 目录 一.基数排序基本思想 二.基数排序代码实现 2.1.二维数组实现 2.2.链表实现

  8. 排序算法8——基数排序

    [基数排序] 基数排序的算法思想:基数排序不同于前面的各种排序算法,前面的排序算法都是基于元素之间的比较好实现的,而基数排序则是利用分类进行排序的方法. [算法思想] 基数排序是一种多关键字排序算法. ...

  9. 经典排序算法之基数排序

    经典排序算法之基数排序 1. 基数排序 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较.由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数, ...

最新文章

  1. 汉诺塔(三)_栈的应用
  2. Tomcat_7.x压缩版_环境变量配置(亲测有效)
  3. 怎么把线稿提取出来_抠线稿,三种提取漫画线稿的方式
  4. 学懂分析,玩转大数据
  5. java 中文怎么截取,java String 中文 字符串 截取
  6. Debian Security Advisory(Debian安全报告) DSA-4407-1 xmltooling
  7. kafka _命令行操作
  8. java 中batch_java相关:Mybatis中使用updateBatch进行批量更新
  9. kali mysql停止服务器_从零开始:手把手教你黑客入门攻破服务器并获取ROOT权限...
  10. 推荐系统之协同过滤(CF)算法详解和实现
  11. ElasticSearch全文搜索引擎之term和match的区别
  12. 《大型网站技术架构》阅读笔记
  13. Sipeed M1W内部esp8285固件烧录教程
  14. Java 爬取行政区划代码
  15. Unity篇——Minimap小地图
  16. iOS总结-Runtime篇之用途及面试题的总结一黑魔法Method Swizzling
  17. intel linux核显性能,Intel UHD Graphics 630 核显性能解析
  18. Python全栈 Linux基础之1.Linux初章
  19. 你还在疯狂加班打码?兄dei,不如跟我学做超融合吧!
  20. java 各版本下载官方网站

热门文章

  1. Java语法糖之foreach
  2. 判断ipad还是安卓_?谷歌认输,iPad或成唯一赢家,安卓平板路在何方?
  3. 小苗快速培养盆景苗方法_九里香盆景的制作与养护
  4. 210307共享内存的读写
  5. 210108阶段三进程管理,多进程编程
  6. HID接口设备-硬件要求
  7. 设计模式之工厂模式(三)
  8. 2018 美团、腾讯、头条、蔚来 社招面试随谈
  9. JDK的OutputStream为什么方法write(int b)的入参类型是int呢?
  10. Llama-impala on yarn的中间协调服务