“基数排序”展现Python的优雅与简洁

在这儿那桶排序为例目的不是向大家介绍基数排序这种排序方式,是想通过基数排序的实现来展现Python的简洁与优雅。在这儿先简单的介绍一下基数排序,至于具体的内容会在排序算法的章节里详细的介绍冒泡排序、选择排序、合并排序、希尔排序、快速排序、堆排序、计数排序、基数排序、桶排序等不同时间复杂度的排序算法,今天先简单的了解一下。

基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。

基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Machine)上的贡献。它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。

下面看不同语言的算法实现:

C语言

Java语言

Pascal

c++

C# 实现基数排序

python 实现

看看Python是多么的神奇~~~~~~~~~~

原文发布于微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文发表时间:2016-05-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

Java语言中:在数据类型的讲解中补充的几个小问题

============================================================================= 1...

8510
来自专栏算法channel

LeetCode实战:子问题分析

主要推送关于对算法的思考以及应用的消息。培养思维能力,注重过程,挖掘背后的原理,刨根问底。本着严谨和准确的态度,目标是撰写实用和启发性的文章,欢迎您的关注。 记...

36690
来自专栏菜鸟前端工程师

JavaScript学习笔记006-作用域0类型转换

10420
来自专栏take time, save time

初级程序员面试不靠谱指南(五)

四、递归的第一次亲密接触     我经常会想,如果给没有学过计算机或者数学的人说递归这个词他们脑中会怎样理解这个词的意思。递归这个概念在面试中出现的概率大于85...

35780
来自专栏AI派

如何使用Python颠倒是非黑白?

有没有发现,打印 True 结果是 False,打印 False 结果是 True。是非黑白就在这么一瞬间颠倒了

8510
来自专栏IT可乐

Java数据结构和算法(七)——链表

  前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷。在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且...

47870
来自专栏从零开始学 Web 前端

js变量提升与函数提升的详细过程

在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

27530
来自专栏大闲人柴毛毛

剑指offer——年龄排序问题

题目:对某公司所有员工的年龄进行排序,要求时间复杂度为O(n) 分析:         在已有的排序算法中,性能最好的是快速排序,但是他在最好的情况下时间复杂度...

32060
来自专栏C语言C++游戏编程

世界最强的编程语言:C语言

char:字符型,用来存储小范围的整数(-128~127)和字符(所有的ASCII字符,128个),一个字节。

17120
来自专栏程序员互动联盟

【编程基础】Java面向对象基础知识

前言: 前面一系列文章讲了Java的一些语法基础知识、Java中的数据类型和Java中的运算符,基本上都是学习Java语言的基础知识,从这一讲开始将会逐步介绍J...

35550

扫码关注云+社区

领取腾讯云代金券