该模块提供了堆排序算法的实现。堆是二叉树,最大堆中父节点大于或等于两个子节点,最小堆父节点小于或等于两个子节点。 创建堆 heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结 ...
分类:
其他好文 时间:
2019-03-18 15:20:38
阅读次数:
217
参考:https://www.cnblogs.com/chengxiao/p/6129630.html ...
分类:
编程语言 时间:
2019-03-16 09:15:25
阅读次数:
204
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法 ...
分类:
编程语言 时间:
2019-03-14 01:06:02
阅读次数:
185
[toc] 什么是堆 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 通常将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。 堆的存 ...
分类:
编程语言 时间:
2019-03-10 23:30:51
阅读次数:
372
一、Prim算法实现 思路: 1、一个存储最小树的边列表mst、一个存储最小树的点集合used、一个堆,排序最小树边缘的最小边。堆顶为最小值。 2、建立邻接表,如{'A':[(7,'A','B'),(5,'A','D')]} 3、随机选初始点 4、排序初始点的边权重,建立堆 代码: 二、村庄造路问题 ...
分类:
其他好文 时间:
2019-03-09 23:45:23
阅读次数:
213
排序算法总结: 快速排序算法: 是基于分治的算法,关键在于划分操作; 性能分析: 堆排序: 归并排序: 拓扑排序: ...
分类:
编程语言 时间:
2019-03-09 01:20:29
阅读次数:
194
基本概念: 1、完全二叉树:若二叉树的深度为h,则除第h层外,其他层的结点全部达到最大值,且第h层的所有结点都集中在左子树。 2、满二叉树:满二叉树是一种特殊的的完全二叉树,所有层的结点都是最大值。 定义: 1、堆是一颗完全二叉树; 2、堆中的某个结点的值总是大于等于(最大堆)或小于等于(最小堆)其 ...
分类:
编程语言 时间:
2019-03-04 15:56:55
阅读次数:
213
```cpp include include using namespace std; const int maxn=1e5+5; int a[maxn], n; void adjust(int s, int t) { int dad=s; int son=dad 2; while(sona[son ...
分类:
编程语言 时间:
2019-03-04 12:45:39
阅读次数:
190
为什么要不稳定啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 我弄了一上午啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 你怎么能不稳定呢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...
分类:
编程语言 时间:
2019-03-01 12:40:34
阅读次数:
208
前言:网上有很多堆排序的案例,我只想写自己堆排序。 一:堆结构 即:一个父节点最多只能有两个子节点(可以没有),如下图 图1 图2 图3 图4 二: 数组与堆结构转换 假设已知堆数组 int[] a = {9,7,6,4,5,1,3,2,} 则相应对结构如下 图5 备注: 一个父节点(pNode 为 ...
分类:
编程语言 时间:
2019-02-27 13:04:57
阅读次数:
170