用 Python 实现堆排序。

简介: 用 Python 实现堆排序。

堆排序(Heap Sort)是一种利用堆数据结构进行排序的算法。它的时间复杂度为 $O(nlogn)$,并且具有空间复杂度为 $O(1)$ 的优点。
以下是使用 Python 实现堆排序的代码:

# 构建最大堆
def buildMaxHeap(arr):
    for i in range(len(arr) // 2 - 1, -1, -1):
        heapify(arr, i)

# 堆化操作
def heapify(arr, index):
    largest = index
    left = 2 * index + 1
    right = 2 * index + 2

    if left < len(arr) and arr[left] > arr[largest]:
        largest = left

    if right < len(arr) and arr[right] > arr[largest]:
        largest = right

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

# 堆排序函数
def heapSort(arr):
    buildMaxHeap(arr)
    n = len(arr)

    for i in range(n - 1, 0, -1):
        arr[0], arr[i] = arr[i], arr[0]
        heapify(arr, 0)

# 测试示例
arr = [12, 11, 13, 5, 6]
heapSort(arr)
print("排序后的数组:", arr)

在这个示例中,我们首先定义了buildMaxHeap函数来构建最大堆。然后,heapify函数用于维护最大堆的性质。最后,heapSort函数执行堆排序的过程。

在测试示例中,我们对给定的数组进行堆排序,并输出排序后的结果。

堆排序的时间复杂度为$O(nlogn)$,它在处理大型数据集时表现良好。希望这个示例对你有所帮助!如果你还有其他问题或需要进一步的解释,请随时告诉我。🤗

相关文章
|
算法 搜索推荐 Python
Python算法——堆排序
Python算法——堆排序
83 2
|
算法 搜索推荐 索引
|
移动开发 算法 搜索推荐
python实现【堆排序】(Heap Sort)
python实现【堆排序】(Heap Sort)
|
Python
Python编程:heapq模块堆排序
堆是一个二叉树,其中每个父节点的值都小于或等于其所有子节点的值。 整个堆的最小元素总是位于二叉树的根节点。 python的heapq模块提供了对堆的支持。 堆数据结构最重要的特征是heap[0]永远是最小的元素
82 0
|
存储 搜索推荐 Python
Python编程:排序算法之堆排序
Python编程:排序算法之堆排序
171 0
Python编程:排序算法之堆排序
|
Python
Python堆排序介绍与力扣三道堆相关题目分享
Python堆排序介绍与力扣三道堆相关题目分享
227 0
|
Python
Python编程:heapq模块堆排序
Python编程:heapq模块堆排序
140 0
|
Python 算法
python堆排序
堆排序介绍 堆排序,顾名思义,就是基于堆。因此先来介绍一下堆的概念。 堆分为最大堆和最小堆,其实就是完全二叉树。
791 0
|
25天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!