十大排序算法——基数排序

以下内容是个人学习笔记的整理。

原理:
桶排序思想。

步骤:

  1. 确定要比较的轮数;
  2. 建立相应的桶;
  3. 按照数据的个位,十位,百位把数据对应位的数放入相应的桶;
  4. 桶内排序;
  5. 从桶内取出数据,组成完整的有序序列。

实现代码(python):

def radix_sort(alist):        
    '基数排序'
    if len(alist) <= 1:
        return alist
    #n代表要比较的几轮
    n = len(str(max(alist)))
    for i in range(n):
        temp = [[] for _ in range(10)]  #数字都是0~9,所以开辟10个桶
        for j in alist:
            temp[j // (10**i) % 10].append(j)  #个位,十位,百位进行排序
        alist = [k for i in temp for k in i] #列表推导式,会新建一个列表
        #相当于
        #res_list = []
        #for i in temp:
            #for k in i:
                #res_ist.append(k)
    return alist

复杂度分析:
-空间复杂度
空间复杂度为O(n)

-时间复杂度
–最优时间复杂度:O(n)
–最坏时间复杂度:O(nlogn)
–平均时间复杂度:O(n)

是否属于原地排序算法:
不是一种原地排序算法

稳定性:
稳定

适应范围:
数据可以划分高低位,而且每位数据范围不能太大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值