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)
不论你在什么时候开始,重要的是开始之后就不要停止。
不论你在什么时候结束,重要的是结束之后就不要悔恨。