python如何实现堆排序(代码示例)

本篇文章给大家带来的内容是关于python如何实现堆排序(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

堆排序

堆排序(heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点(但是不保证所有左子树比右子树小反之亦然)。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:

大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;

小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;

堆排序的平均时间复杂度为 Ο(nlogn)。

算法步骤

1、创建一个堆 H[0……n-1];(**对非叶子节点的子节点进行调节,构建堆**)

立即学习“Python免费学习笔记(深入)”;

2、把堆首(最大值)和堆尾互换;

3、把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;

4、重复步骤 2,直到堆的尺寸为 1。

Python 代码实现

def buildMaxHeap(arr):    import math    for i in range(math.floor(len(arr)/2),-1,-1):#构建堆由下往上构建所以用-1        heapify(arr,i)def heapify(arr, i):    left = 2*i+1    right = 2*i+2    largest = i    if left  arr[largest]:        largest = left    if right  arr[largest]:        largest = right    if largest != i:        swap(arr, i, largest)        heapify(arr, largest)def swap(arr, i, j):    arr[i], arr[j] = arr[j], arr[i]def heapSort(arr):    global arrLen    arrLen = len(arr)    buildMaxHeap(arr)    for i in range(len(arr)-1,0,-1):        swap(arr,0,i)        arrLen -=1 #每次踢掉求出的最大值        heapify(arr, 0)    return arr

登录后复制

以上就是python如何实现堆排序(代码示例)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2534700.html

(0)
上一篇 2025年3月5日 21:35:02
下一篇 2025年3月5日 22:05:10

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎么找到黑客的联系方式?

    如果你想要找到黑客的联系方式,那么你可能面临以下难题:黑客往往会隐藏他们的身份,并且他们的联系方式很难被发现。php小编草莓在这里为你提供了一份指南,旨在帮助你找到黑客的联系方式。在本指南中,我们将介绍一些常见的黑客使用的联系方式,并提供一…

    2025年3月5日
    200
  • 如何使用Python处理JSON数据

    如何使用python处理json数据?本篇文章就给大家介绍使用python处理json数据的基本方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 在介绍使用Python处理JSON数据的基本方法之前,我们首先要了解一下…

    编程技术 2025年3月5日
    200
  • Crypto算法库是什么?Crypto算法库的详解

    本篇文章给大家带来的内容是关于crypto算法库是什么?crypto算法库的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 安装与使用 Crypto 算法库在 python 中最初叫 pycrypto,这个作者有点懒,…

    编程技术 2025年3月5日
    200
  • Python解方程的技巧介绍(代码示例)

    本篇文章给大家带来的内容是关于python解方程的技巧介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 numpy numpy 用来解方程的话有点复杂,需要用到矩阵的思维!我矩阵没学好再加上 numpy 不能…

    编程技术 2025年3月5日
    200
  • Selenium定时刷新网页的代码示例

    本篇文章给大家带来的内容是关于Selenium定时刷新网页的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 代码 代码很简单,主要是为了熟悉Selenium这个库的函数. from selenium import …

    编程技术 2025年3月5日
    200
  • python多进程控制的教程讲解(附示例)

    本篇文章给大家带来的内容是关于python多进程控制的教程讲解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 multiprocessing简介 multiprocessing是python自带的多进程模块,可以…

    2025年3月5日 编程技术
    200
  • python中flask_sqlalchemy操作数据库的方法示例

    本篇文章给大家带来的内容是关于python中flask_sqlalchemy操作数据库的方法示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 flask_sqlalchemy 使用对象关系映射(object-relati…

    2025年3月5日 编程技术
    200
  • python基于flask_sqlalchemy的网页显示数据库信息的代码示例

    本篇文章给大家带来的内容是关于python基于flask_sqlalchemy的网页显示数据库信息的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 网页显示数据库信息 使用我们刚学习的flask_sqlalchem…

    2025年3月5日
    200
  • python基于flask上传文件的代码示例

    本篇文章给大家带来的内容是关于python基于flask上传文件的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 上传文件 实现目标: 如何将文件上传到服务器(保存在指定的文件夹) # 需要建立当前工作环境下的/s…

    2025年3月5日
    200
  • python中flask的应用实例(代码)

    本篇文章给大家带来的内容是关于python中flask的应用实例(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 将用户登陆信息绑定数据库 要求将用户登陆时的信息,发送至后台与数据库进行比对,来判断用户是否可登陆 #…

    2025年3月5日
    200

发表回复

登录后才能评论