Python实现基数排序

基数排序原理:

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

动图演示:

python代码:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File        :RadixSort.py
@Description :取得数组中的最大数,并取得位数;
              arr为原始数组,从最低位开始取每个位组成radix数组;
              对radix进行计数排序(利用计数排序适用于小范围数的特点);
@CreatTime   :2020/08/21 10:25:07
@Author      :Yunhgu
@Version     :1.0
'''
def RadicSort(arr):
    MinnumLength = 1 
    MaxNumLength = len(str(max(arr)))
    while MinnumLength<=MaxNumLength:
        bucket_list =[[] for _ in range(10)]
        for a in arr:
            Digits = int(a / (10**MinnumLength)) % 10
            bucket_list[Digits].append(a) # 找到位置放入桶数组
        arr.clear()
        for bucket in bucket_list:
            for num in bucket:
                arr.append(num)
        MinnumLength+=1
    return arr

if __name__ == "__main__":
    int_list = [4, 56, 87, 56, 23, 78, 69, 23, 321,66]
    r = RadicSort(int_list)
    print(r)

 

posted @ 2020-08-26 10:38  不能说的秘密  阅读(469)  评论(0编辑  收藏  举报