在键盘上输入若干个我整数,用堆排序方法实现排序

在键盘上输入若干个整数,用堆排序方法实现排序

参考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)

希望以上解答能够对你有所帮助!