python数据结构学习笔记-2016-12-03-01-堆排序
来源:互联网 发布:一角书屋知乎 编辑:程序博客网 时间:2024/05/16 06:33
13.5 堆排序
堆排序(heapsort),该算法以一个未排序序列,创建堆,然后从中提取元素来,从而创建排序序列。
13.5.1 简单实现
#-*-coding: utf-8-*-# 堆排序算法的简单实现from arrayheap import MaxHeapdef simpleHeapSort(theSeq): n = len(theSeq) heap = MaxHeap(n) # 根据序列创建相应的最大堆 for item in theSeq: heap.add(item) # 提取元素 for i in range(n, 0, -1): theSeq[i] = heap.extract()向堆中添加元素和提取元素的时间复杂度是O(log n),两者均执行了n次,所以堆排序算法的时间复杂度是O(n log n)。
13.5.2 原位排序
上述实现代码中有一缺陷,就是需要额外的内存来储存堆。
我们从序列开始,来构建堆。此时序列分为两部分,前面是堆,后面则是未排序序列。
这样一来,我们就无需使用额外的内存来创建堆,而可以直接使用序列来构建堆,只需依赖sift-up过程和sift-down过程即可。
0 0
- python数据结构学习笔记-2016-12-03-01-堆排序
- python数据结构学习笔记-2016-11-30-01-堆
- python数据结构学习笔记-2016-10-24-01-排序列表
- python数据结构学习笔记-2016-11-23-01-归并排序
- python数据结构学习笔记-2016-11-24-01-快速排序
- 【数据结构】堆、堆排序笔记
- 数据结构学习笔记 --- 排序(选择排序、堆排序)
- 数据结构学习笔记 --- 排序(选择排序、堆排序)
- python数据结构学习笔记-2016-10-23-02-排序
- 数据结构与算法学习笔记——堆排序
- 《数据结构与算法》学习笔记27 堆排序
- 《数据结构复习笔记》--堆和堆排序
- 《算法与数据结构》学习笔记 4-6 优化的堆排序(原地堆排序)
- 堆排序学习笔记
- 堆排序学习笔记
- 学习笔记--堆排序
- 【数据结构学习】-堆与堆排序
- python数据结构学习笔记-2016-11-26-01-链表排序
- html笔记
- the SetStack computer
- jottings-ubuntu16.04 lts的完整克隆
- String,StringBuffer和StringBuilder的区别
- 线程让步(六)
- python数据结构学习笔记-2016-12-03-01-堆排序
- java多线程-02-基本操作及线程通信示例
- java8 Stream学习之旅
- 第二天
- 杭电 1272小希的迷宫
- ZCMU—1607
- 设置 图片的 裁剪模式 为居中裁剪
- oracle何时使用索引
- The version of CocoaPods used to generate the lockfile (1.2.0.beta.1) is higher than the version of