zoukankan      html  css  js  c++  java
  • 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)
    不论你在什么时候开始,重要的是开始之后就不要停止。 不论你在什么时候结束,重要的是结束之后就不要悔恨。
  • 相关阅读:
    编译预处理命令define
    共享数据的包含const
    友元类,友元函数
    静态成员static
    this 指针
    构造函数与析构函数
    c++类的基础
    void指针和const指针
    c++基础
    组播的实现
  • 原文地址:https://www.cnblogs.com/yunhgu/p/13563675.html
Copyright © 2011-2022 走看看