堆排序

#!/usr/bin/python
import sysdef left_child(node):return node * 2 + 1def right_child(node):return node * 2 + 2def parent(node):if (node % 2):return (i - 1) / 2else:return (i - 2) / 2def max_heapify(array, i, heap_size):l = left_child(i)r = right_child(i)largest = iif l < heap_size and array[l] > array[i]:largest = lif r < heap_size and array[r] > array[largest]:largest = rif largest != i:array[i], array[largest] = array[largest], array[i]max_heapify(array, largest, heap_size)def build_max_heap(array):for i in range(len(array) / 2, -1, -1):max_heapify(array, i, len(array))def heap_sort(array):build_max_heap(array)for i in range(len(array) - 1, 0, -1):array[0], array[i] = array[i], array[0]max_heapify(array, 0, i)if __name__ == "__main__":array = [0, 2, 6, 98, 34, -5, 23, 11, 89, 100, 7]heap_sort(array)for a in array:sys.stdout.write("%d " % a)

转载于:https://www.cnblogs.com/Mingxx/archive/2012/06/05/2537162.html

算法 排序 python 实现--堆排序相关推荐

  1. 算法 排序 python 实现--快速排序

    主要分为两个子算法,PARTITION(A, p, r)以A[r]为基准对数组进行一个划分,比A[r]小的放在左边,比A[r]大的放在右边.QUICKSORT(A, p, r)是快速排序的子程序,调用 ...

  2. 八大排序算法的 Python 实现

    八大排序算法的 Python 实现 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入 ...

  3. 【Kick Algorithm】十大排序算法及其Python实现

    文章来源于NewBeeNLP,作者kaiyuan 写在前面 看到好像春招都已经陆续都开始了,最近抽空打算把自己和朋友的经验整理一下分享出来.作为一个刚刚经历秋招打击的自闭儿童,可以非常负责任地说手撕算 ...

  4. 归并排序验证性实验_攻略 | 10 大经典排序算法(Python 版)

    全国信息学大神和家长在这里 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能 ...

  5. python基础===八大排序算法的 Python 实现

    本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一 ...

  6. 【排序】算法(python实现)

    文章目录 python 排序算法 1 插入排序 1.1 直接插入排序 算法思想 1.2 希尔排序 算法思想 2. 选择排序 2.1 简单选择排序 2.2 堆排序 参考 python 排序算法 1 插入 ...

  7. 经典排序算法及其Python实现

    写在前面 前面学习了几种典型的数据结构,当然数据结构和算法是密不可分的,算法作为程序的一个重要部分也是在求职面试中屡问不爽的考点,最近我们就来整理一下一些经典的算法,包括排序.查找.图.动态规划等等. ...

  8. 9个元素换6次达到排序序列_全面讲解十大经典排序算法(Python实现)

    作者 | hustcc 链接 | https://github.com/hustcc/JS-Sorting-Algorith 排序算法是<数据结构与算法>中最基本的算法之一.排序算法可以分 ...

  9. python快速排序算法没看懂_你需要知道的九大排序算法【Python实现】之快速排序...

    五.快速排序 基本思想:  通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序. 算法实现: ​ #coding: ...

最新文章

  1. 数组中查找並返回数组_用Python查找数组中出现奇数次的那个数字
  2. Linux内核OOM机制的浅析
  3. TensorFlow精选Github开源项目
  4. SpringBoot项目启动时:Failed to initialize connector [Connector[HTTP/1.1-8080]]
  5. 鼎捷软件怎么样_凯里物流仓储怎么样
  6. Memcache存储大数据的问题
  7. 南邮计算机学院是211,南京邮电大学是211还是985
  8. vscode运行python文件_vscode怎么运行python文件
  9. python数组和列表的区别_JS数组方法与python列表方法的比较
  10. 对比,还原真实的GPU池化
  11. top结合jstack处理线上cpu飙升问题
  12. reentrantlock原理_分享:synchronized和ReentrantLock的实现原理知识点
  13. 【Django 2021年最新版教程4】为项目添加资源文件(css,js,image)
  14. uboot启动文件start.s和main.c解析
  15. 51单片机入门教程(2)——流水灯的实现
  16. javascript案例10——下拉菜单
  17. 使用nginx配置二级域名
  18. linux串口无线透传,一种无线串口透传系统的制作方法
  19. 如何解读羊毛出在了猪身上的保理业务?
  20. 图学习推荐系统综述| Graph Learning Approaches to Recommender Systems

热门文章

  1. linux进程阻塞的原因,释放大块内存时的阻塞问题
  2. c++中的向量_C ++中的向量
  3. python日期_Python日期
  4. Python Flask教程
  5. python 字节字符串_Python字符串转换为字节,字节转换为字符串
  6. Python字符串swapcase()
  7. 基于mykernel的时间片轮转调度
  8. mysql下载安装使用教程
  9. 快速学懂pandas
  10. Nginx作为web服务器的安装配置