当前位置:   article > 正文

体验百度文心一言AI大模型生成堆排序算法思想和对应的python测试程序_ai生成python代码测试

ai生成python代码测试
  • 堆排序(Heap Sort)是一种基于二叉堆(Binary Heap)的排序算法,它的思想如下:
  • 构建一个二叉堆:将待排序的数组看作一个二叉树,并将其调整为一个最大堆(Max Heap)或最小堆(Min Heap)。最大堆是指根节点大于或等于左右子节点的二叉堆,最小堆则相反,指根节点小于或等于左右子节点的二叉堆。
  • 将堆顶元素与最后一个元素交换:将堆顶元素(即最大或最小元素)与未排序部分的最后一个元素交换位置。
  • 调整堆:将堆顶元素与未排序部分的最后一个元素交换后,需要重新调整堆,使得堆满足最大堆或最小堆的性质。
  • 重复步骤2和3:重复执行步骤2和3,直到整个数组都被排序。
  • 在堆排序中,构建堆的时间复杂度为O(n),交换堆顶元素和调整堆的时间复杂度为O(log n),因此堆排序的总时间复杂度为O(n logn)。由于堆排序的时间复杂度较低,且不需要额外的空间,因此在实际应用中被广泛使用。
    以下是一个用Python实现的堆排序测试程序:
def heapify(arr, n, i):
    largest = i
    left = 2 * i + 1
    right = 2 * i + 2

    if left < n and arr[left] > arr[largest]:
        largest = left

    if right < n and arr[right] > arr[largest]:
        largest = right

    if largest != i:
        arr[i], arr[largest] = arr[largest], arr[i]
        heapify(arr, n, largest)

def heap_sort(arr):
    n = len(arr)

    # Build max heap
    for i in range(n // 2 - 1, -1, -1):
        heapify(arr, n, i)

    # Extract elements from heap
    for i in range(n - 1, 0, -1):
        arr[i], arr[0] = arr[0], arr[i]  # Swap
        heapify(arr, i, 0)

# Test heap sort
arr = [12, 11, 13, 5, 6, 7]
heap_sort(arr)
print("Sorted array is:", arr)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
Sorted array is: [5, 6, 7, 11, 12, 13]
  • 1
  • 该程序首先定义了一个名为heapify的函数,用于调整堆。该函数接受三个参数,分别为数组arr、堆的大小n和要调整的堆的索引i。在heapify函数中,首先将索引i设置为当前节点的索引,然后分别比较左右子节点和当前节点的大小关系,如果左右子节点中有一个比当前节点大,则将最大节点的索引更新为左或右子节点的索引。如果最大节点的索引不等于当前节点的索引,则交换当前节点和最大节点的值,并递归调用heapify函数来继续调整堆。
  • 接下来,定义了一个名为heap_sort的函数,用于执行堆排序。该函数接受一个数组arr作为输入。在heap_sort函数中,首先构建一个最大堆,然后从最后一个元素开始,将堆顶元素(即最大或最小元素)与未排序部分的最后一个元素交换位置,并调整堆,直到整个数组都被排序。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
微信Alt+A截屏工具
pycharm 2019.3集成开发环境

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号