首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python算法——基数排序

基数排序是一种稳定的排序算法,适用于整数或字符串排序。本文将详细介绍基数排序的工作原理和Python实现。...基数排序的工作原理 基数排序的基本思想是: 根据数据的位数,从低位到高位或从高位到低位,依次对数据进行排序。 每一轮排序根据位数的不同,将数据分配到不同的桶中。...802 桶 2:2, 802 桶 4:24 桶 5:75 桶 6:66 桶 7: 桶 8: 桶 9:45 合并所有的桶,得到有序数组:[170, 90, 802, 2, 24, 75, 66, 45] Python...实现基数排序 下面是Python中的基数排序实现: def radix_sort(arr): # 获取数组中的最大值 max_val = max(arr) # 计算最大值的位数...示例代码 下面是一个使用Python进行基数排序的示例代码: def radix_sort(arr): max_val = max(arr) digit_count = len(str(

27510

基数排序python实现

基数排序python实现 基数排序 基数排序(英语:Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。...由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。 所以基数排序的原理就是,先排元素的最后一位,再排倒数第二位,直到所有位数都排完。...具体代码 这里将列表进行基数排序,默认列表中的元素都是正整数 def radix_sort(s): """基数排序""" i = 0 # 记录当前正在排拿一位,最低位为1 max_num...345345], [], [], [], [], [], []] [1, 4, 5, 7, 23, 45, 67, 78, 99, 334, 345, 3453, 23424, 345345] 总结 基数排序不仅仅只能排正整数

90930
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python实现基数排序

    一、基数排序简介 基数排序(Radix Sort)是一种非比较型的排序算法,与桶排序的思想相似,对数据进行分桶和合并。 基数排序将数据按位进行分桶,然后将桶中的数据合并。...基数排序除了用于对整数进行排序,也可以用于对浮点数、字符串进行排序。 基数排序可以分为最高位优先法和最低位优先法,两种方法的结果相同。...以个位数进行分桶和合并完成,第一轮基数排序结束。 ? 9. 第一轮基数排序已经对个位数进行了排序,得到了一个新的列表。...三、Python实现基数排序 # coding=utf-8 def radix_sort(array): max_num = max(array) place = 1 while...25, 27, 18] print(radix_sort(array)) 运行结果: [9, 13, 15, 17, 17, 18, 22, 25, 25, 27, 32, 33] 代码中,使用Python

    68520

    Python|关于基数排序(1)

    基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些...“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。...在基数排序中又分为; 1)多位关键位排序 2)链式基数排序。今天我们先来谈一谈1)多位关键字排序。 解决方案 多关键字排序中存在高位优先和低位优先。...结语 以上就是基数排序中的多关键字排序,文笔粗糙,我会加油改进的。下次我们来学习链式基数排序

    30910

    基数排序

    1.概要 基数排序(RadixSort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bing sort,顾名思义,他是通过键值的各个位的值,将要排序的元素分配至某些...基数排序法是属于稳定性的排序。 基数排序(Radix Sort)是桶排序的扩展。 基数排序是1887年赫尔曼·何乐礼发明的。他是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较。...基数排序图文说明 将数组[53,3,542,748,14,214]使用基数排序,进行升序排序。...为了防止在放入的时候,数据溢出,则每个一维数组(桶),大小定位arr.length //3.明确,基数排序是使用空间换时间的经典排序算法 int[,] bucket...为了防止在放入的时候,数据溢出,则每个一维数组(桶),大小定位arr.length //3.明确,基数排序是使用空间换时间的经典排序算法 int[,] bucket

    42520

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

    在这儿那桶排序为例目的不是向大家介绍基数排序这种排序方式,是想通过基数排序的实现来展现Python的简洁与优雅。...在这儿先简单的介绍一下基数排序,至于具体的内容会在排序算法的章节里详细的介绍冒泡排序、选择排序、合并排序、希尔排序、快速排序、堆排序、计数排序、基数排序、桶排序等不同时间复杂度的排序算法,今天先简单的了解一下...“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。...基数排序的发明可以追溯到1887年赫尔曼·何乐礼在打孔卡片制表机(Tabulation Machine)上的贡献。它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。...C# 实现基数排序 ? ? python 实现 ? 看看Python是多么的神奇~~~~~~~~~~

    1.1K50

    基数排序

    简介 基数排序属于非比较排序算法类,故其时间复杂度不受比较排序算法时间复杂度下界的限制。基数排序对排序关键字的最低数位到最高数位中的每一数位采用其他排序算法进行排序。...基数排序时间复杂度可以达到 (这中情况下对每一数位采用的排序算法为计数排序)。其中, 为待排序序列的排序关键字每一数位的最大范围,ddd 是排序关键字的数位数目。...基数排序是稳定的,其原址性取决于对每一数位所使用的排序算法的原址性。 2....而基数排序则是将排序关键字的每一数位对应每一个关键字,高数位对应高优先级关键字,低数位对应低优先级关键字,然后采用自底向上的思想对每一数位进行排序。...基数排序一般采用计数排序对每一数位进行一轮排序,这样时间复杂度就是线性的,为 ;由于计数排序是非原址的,所以如此实现的基数排序也是非原址的,且空间复杂度取决于一轮计数排序所需的空间复杂度(故适用性比计数排序广

    79220

    10.6 基数排序

    01 基数排序 1、基数排序(Radix Sorting)是和前面几篇文章所述各类排序方法完全不相同的一种排序方法。...2、实现排序主要是通过关键字间的比较和移动记录这两种操作,而实现基数排序不需要进行记录关键字间的比较。 3、基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。...4、基数排序是借助“分配”和“收集”两种操作对单逻辑关键字进行排序的一种内部排序方法。 5、有的逻辑关键字可以看成由若干关键字复合而成。...6、早在计算机出现之前,利用卡片分类机对穿孔卡上的记录进行排序就是用的链式基数排序。 如果您觉得本篇文章对您有作用,请转发给更多的人,点一下好看就是对小编的最大支持!

    4473029

    Python 算法高级篇:桶排序与基数排序

    什么是基数排序基数排序是一种非比较性排序算法,它将整数按照位数进行排序。基数排序通常用于对整数进行排序,特别是对于具有相同位数的整数集合。 基数排序的基本步骤 1 ....基数排序的示例 让我们看一个基数排序的示例,假设我们有一个整数列表: [170, 45, 75, 90, 802, 24, 2, 66] 首先,我们按照个位数的值将它们分成 10 个桶: Bucket...基数排序的应用 基数排序通常用于排序整数,特别是具有相同位数的整数。它在处理大整数的计算中也非常有用,例如大整数的加法和乘法运算。...Python 示例代码 下面是 Python 中的桶排序和基数排序的示例代码: # 桶排序 def bucket_sort(arr): # 创建空桶 buckets = [[] for...希望这篇文章对你理解桶排序和基数排序有所帮助。

    30130

    7.5.2 基数排序

    基数排序是一种很特别的排序方法,它不是基于比较进行排序的,而是采用多关键字排序思想,借助“分配”和“收集”两种操作对单逻辑关键字进行排序。...基数排序又分为最高位优先(MSD)排序和最低位优先(LSD)排序。...以r为基数的最低位优先基数排序的过程: 假设线性表由结点序列a0,a1,……an-1构成,每个结点aj的关键字由d元组[{ k((d-1j),k(d-2,j),……,k(1,j),k(0,j) }组成,...时间效率:基数排序需要进行d趟分配和收集,一趟分配需要O(n),一趟收集需要O(r),所以基数排序的时间复杂度为O(d(n+r)),它与序列的初始状态无关。...稳定性:对于基数排序算法而言,很重要一定是按位排序时必须是稳定的,因此,这也保证了基数排序保持稳定性。

    34630
    领券