登录
首页 >  文章 >  python教程

Python中实现堆排序算法的概念和方法

来源:网易伏羲

时间:2024-01-24 18:11:37 129浏览 收藏

文章小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Python中实现堆排序算法的概念和方法》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


堆排序算法概念 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中实现堆排序算法的概念和方法》的详细内容,更多关于算法的概念的资料请关注golang学习网公众号!

声明:本文转载于:网易伏羲 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>