018.【排序算法】基数排序法

1. 基数排序法

基数排序法和计数排序法一样,都是一种非交换排序。基数排序过程和计数排序过程都需要借助桶来进行。基数排序的主要思想是设置若干个桶,将关键字为k的记录放入第k个桶,然后按序号将非空的数据连接。关键字k就是将每个数据按个位、十位、百位…进行分割而产生的。基数排序不仅仅可以应用在数字之间的排序,还可以应用在字符串排序(按26个字母顺序)等。

2. 使用基数排序法为列表中的数字进行递增排序

具体代码如下:

def radix_sort(data):                  				# 基数排序,参数data是待排序数列
    i = 0                      						# 记录当前正在排拿一位,最低位为1
    max_num = max(data)        						# 最大值
    j = len(str(max_num))         					# 记录最大值的位数
    while i < j:
        # 初始化桶数组,因为每一位数字都是0~9,故建立10个桶,列表中包含十个列表元素
        bucket_list = [[] for x in range(10)]
        for x in data:                				# 找数据s
            bucket_list[int(x / (10 ** i)) % 10].append(x)   		# 找到位置放入桶数组
        print(bucket_list)          				# 打印每次的桶情况
        data.clear()                  				# 将原data置空
        for x in bucket_list:       				# 放回原data序列
            for y in x:             				# 遍历排序后的结果
                data.append(y) 						# 放数据
        i += 1                         				# 执行一次,向后继续拿数据执行循环


data = [410,265,52,530,116,789,110] 				# 待排序列表
radix_sort(data)                        			# 调用基数排序函数
print(data)                               			# 输出排序结果

猜你喜欢

转载自blog.csdn.net/qq_42226855/article/details/131229342