用python写出基数排序 输入的第一行包含1个正整数n,表示共有n个正整数需要参与排序。其中n不超过100000,保证所有正整数不大于32767。 第二行包含n个用空格隔开的正整数,表示n个需要排序的整数。 输出 只有1行,包含n个整数,表示从小到大排序完毕的所有整数。 请在每个整数后输出一个空格,并请注意行尾输出换行。
时间: 2024-02-19 17:03:09 浏览: 89
我们第一行包括两个整数n,k(1<=n<=100,k<=6e5),表示有n个数字,目标和为k 第二行输入n个整数(c1 c2
基数排序(Radix Sort)是一种非比较型排序算法。它将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序是稳定的排序算法。下面是使用Python实现基数排序的代码:
```python
def radix_sort(nums):
# 获取最大值,确定最高位数
max_num = max(nums)
max_digit = len(str(max_num))
# 从低位到高位进行排序
for i in range(1, max_digit+1):
# 每一位都是0-9十个桶
buckets = [[] for _ in range(10)]
# 将数字放入对应的桶中
for num in nums:
digit = (num // 10**(i-1)) % 10
buckets[digit].append(num)
# 从桶中取出数字,重新组成数组
nums = []
for bucket in buckets:
nums.extend(bucket)
return nums
# 读取输入
n = int(input())
nums = list(map(int, input().split()))
# 基数排序
nums_sorted = radix_sort(nums)
# 输出结果
for num in nums_sorted:
print(num, end=' ')
print() # 输出换行符
```
该代码首先定义了一个`radix_sort`函数,它接受一个整数列表作为输入,返回排序后的列表。在`radix_sort`函数中,我们需要确定最大值和最高位数,然后从低位到高位进行排序。我们使用十个桶来存储每个数字,最后将数字从桶中取出,重新组成数组即可。
在主程序中,我们首先读取输入,然后调用`radix_sort`函数进行排序,最后输出结果。注意在输出结果时,需要在每个整数后面加一个空格,并在最后输出一个换行符。
阅读全文