描述 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也能用于其他数据类型。 本题要求必须使用基数排序,不要使用其他排序算法如堆排序,归并排序,快速排序等,也不要直接调用库函数,我们会在后台检查提交的代码! 输入 输入的第一行包含1个正整数n,表示共有n个正整数需要参与排序,其中n不超过100000。 第二行包含n个用空格隔开的正整数,表示n个需要排序的整数。 输出 只有1行,包含n个整数,表示从小到大排序完毕的所有整数。 请在每个整数后输出一个空格,并请注意行尾输出换行。请用python实现
2条回答
Lucky_Dog_c 2023-10-27 15:15关注def counting_sort(arr, exp): n = len(arr) output = [0] * n count = [0] * 10 for i in range(n): index = arr[i] // exp count[index % 10] += 1 for i in range(1, 10): count[i] += count[i - 1] i = n - 1 while i >= 0: index = arr[i] // exp output[count[index % 10] - 1] = arr[i] count[index % 10] -= 1 i -= 1 for i in range(n): arr[i] = output[i] def radix_sort(arr): max_value = max(arr) exp = 1 while max_value // exp > 0: counting_sort(arr, exp) exp *= 10 return arr # 读取输入 n = int(input()) arr = list(map(int, input().split())) # 基数排序 sorted_arr = radix_sort(arr) # 输出结果 for num in sorted_arr: print(num, end=' ') print()解决 无用评论 打赏 举报