【问题描述】 将键盘输入的n个整数降序输出,排序方法自选。要求用函数实现排序,主函数完成数据输入、排序函数的调用及排序结果输出。 【输入形式】 输入入两行。第一行一个n值,第二行n个整数。 【输出形式】 输出一行数据,数据降序排列,每个数据占4列。
时间: 2024-10-17 13:15:47 浏览: 23
Java中从键盘输入多个整数的方法
为了实现这个功能,你可以选择使用一种常见的排序算法,如快速排序、归并排序或堆排序等,因为它们的时间复杂度相对较低。这里我将以Python为例,给出一个使用堆排序的解决方案:
```python
import sys
def heapify(arr, n, i):
largest = i
l = 2 * i + 1
r = 2 * i + 2
if l < n and arr[i] < arr[l]:
largest = l
if r < n and arr[largest] < arr[r]:
largest = r
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
def heap_sort(arr):
n = len(arr)
# 构建最大堆
for i in range(n // 2 - 1, -1, -1):
heapify(arr, n, i)
# 逐层调整堆,直到排序完成
for i in range(n - 1, 0, -1):
arr[0], arr[i] = arr[i], arr[0] # 交换根节点和最后一个元素
heapify(arr, i, 0)
def main():
n = int(input("请输入整数的数量:"))
numbers = list(map(int, input("请输入{}个整数:".format(n)).split()))
heap_sort(numbers)
print("\n".join(["{:<4}".format(num) for num in numbers[::-1]])) # 逆序输出,并保证每列4个字符宽度
if __name__ == "__main__":
main()
```
**
阅读全文