Python中实现堆排序算法的概念及代码

2024年 1月 23日 80.2k 0

堆排序算法概念 Python实现堆排序算法

了解堆排序算法的前提是要知道完全二叉树和堆数据结构。堆排序算法是将数组可视化为完全二叉树,因此也被称之为“堆”。

堆排序算法原理

1、根据最大堆属性,数据组中最大的项存储在根节点

2、去掉根元素,放到数组的末尾(第n个位置),把树的最后一项,放到空缺的地方。

3、将堆的大小减少1。

4、再次堆化根元素

5、重复该过程,直到列表中的所有项目都被排序

Python实现堆排序算法

指定数组arr= 1 12 9 5 6 10

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

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

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

for i in range(n//2, -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)

arr = [1, 12, 9, 5, 6, 10]
heapSort(arr)
n = len(arr)
print("Sorted array is")
for i in range(n):
print("%d " % arr[i], end='')

登录后复制

以上就是Python中实现堆排序算法的概念及代码的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论