在键盘上输入若干个整数,用堆排序方法实现排序
参考GPT和自己的思路:
好的,关于在键盘上输入若干个整数,并用堆排序方法实现排序的问题,我给你提供如下解答:
堆排序是一种比较高效的排序算法,它的基本思想是将待排序的元素构造成一个最大堆,然后将堆顶元素与堆底元素交换,再将剩余元素调整为最大堆,依次类推,直到所有元素有序。下面是一种基于Python语言实现的堆排序算法:
def heapify(arr, n, i):
largest = i # 初始化最大元素为根节点
l = 2 * i + 1 # 左子节点
r = 2 * i + 2 # 右子节点
# 如果左子节点比根节点大,则更新最大元素为左子节点
if l < n and arr[l] > arr[largest]:
largest = l
# 如果右子节点比根节点大,则更新最大元素为右子节点
if r < n and arr[r] > arr[largest]:
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, -1, -1):
heapify(arr, n, i)
# 依次将堆顶元素与堆底元素交换并调整剩余元素为最大堆
for i in range(n-1, 0, -1):
arr[i], arr[0] = arr[0], arr[i]
heapify(arr, i, 0)
return arr
对于输入若干个整数的情况,可以先用input函数读入字符串形式的整数,然后用split函数将它们划分为一个整数列表。最后调用heap_sort函数进行排序即可。下面是一段示例代码:
# 读入整数列表
s = input()
lst = list(map(int, s.split()))
# 排序并输出结果
sorted_lst = heap_sort(lst)
print(sorted_lst)
希望以上解答能够对你有所帮助!