基数排序python代码
时间: 2023-10-13 18:26:40 浏览: 94
基数排序(radix sort)是一种非比较型整数排序算法。基数排序的做法是将所有待比较数值统一为同样的位数长度,然后从低位开始,依次进行一次排序,这样从最低位排序一直到最高位排序完成后,数列就变成一个有序序列。
以下是基数排序的 Python 代码实现:
```python
def radix_sort(nums):
# 获取数组中的最大值
max_num = max(nums)
# 计算最大值的位数
digit = 0
while max_num:
digit += 1
max_num //= 10
# 初始化桶
bucket = [[] for _ in range(10)]
# 进行 digit 次排序
for i in range(digit):
# 将 nums 中的每个元素放入对应的桶中
for num in nums:
index = (num // (10 ** i)) % 10
bucket[index].append(num)
# 将桶中的元素依次放回 nums 中
nums.clear()
for b in bucket:
nums += b
b.clear()
return nums
```
使用示例:
```python
nums = [54, 26, 93, 17, 77, 31, 44, 55, 20]
sorted_nums = radix_sort(nums)
print(sorted_nums) # [17, 20, 26, 31, 44, 54, 55, 77, 93]
```
在这个实现中,我们首先获取了数组中的最大值,并计算了最大值的位数 `digit`。接着,我们使用一个长度为 10 的桶,将每个元素按照当前位数放入对应的桶中。最后,我们将桶中的元素依次放回数组 `nums` 中,完成一次排序。重复 digit 次排序后,数组 `nums` 就变成了有序序列。
阅读全文