python实现堆排序
2016-01-13 21:52
615 查看
实现代码如下:
# -*- coding=utf-8 -*- def MaxHeapify(li, i): '''本函数的功能是在数组li中,使下标为i对应的值遵循最大堆的性质 即它的子女必须小于等于它,以此类推,直到这个值满足条件或者它在 叶子节点上''' l = 2 * i +1 r = 2 * i +2 largest = i if l < len(li) and li[l] > li[i]: largest = l if r < len(li) and li[r] > li[largest]: largest = r if largest != i: li[i], li[largest] = li[largest], li[i] MaxHeapify(li, largest) def BuildMaxHeap(li): '''本函数的功能是使数组li对应的堆变为最大堆''' i = len(li)/2 - 1 while i >= 0: MaxHeapify(li, i) i -= 1 def HeapSort(li): '''本函数的功能是实现堆排序''' BuildMaxHeap(li) print li,'\n----------------------------------' i = len(li) - 1 while i >= 1: li[i],li[0] = li[0],li[i] tmp = li[:i] MaxHeapify(tmp,0) li[:i] = tmp print li i -= 1 if __name__ == '__main__': li = [5,14,2,25,7,17,20,8,4] HeapSort(li) print li
相关文章推荐
- 使用国内镜像源来加速python pypi包的安装
- 在python下安装这个第三方库numpy、scipy、matplotlib
- Python 2.5.11 返回函数
- Python---索引
- python动态生成写文件变量
- Win7 python2.7 Scrapy的安装
- python基础知识-列表,元组,字典
- Python在IDLE环境下常用快捷键
- numpy的argsort和sum和tile函数
- python学习之3 数据库sqlite
- Python垃圾回收机制详解
- 【Python】Python中中文的字符串格式化对齐
- python学习之2 正则表达式re
- python---购物扩展
- python学习笔记 - 初识socket
- 有用的Python代码片段
- 使用python实现二叉搜索树
- 2015 Python News
- Python获取IP地址
- python set集合操作