import java.util.Scanner ; public class HeapSort{ int[] h ; int n ; public void swap(int[] array, int x, int y){ //简单的交换函数; int t = array[x] ; array[x ...
分类:
其他好文 时间:
2016-10-01 15:00:52
阅读次数:
141
学习golang难免需要分析源码包中一些实现,下面就来说说container/heap包的源码 heap的实现使用到了小根堆,下面先对堆做个简单说明 1. 堆概念 堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。 最大堆和最小堆是二叉堆的两种形式 ...
分类:
其他好文 时间:
2016-09-28 16:05:00
阅读次数:
193
题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利。但是,小L对数据结构的掌握实在十分渣渣。 所以,小L当时卡在了二叉树。 题目描述 在计算机科学中,二叉树是每个结点最多有两个子结点的有序树。通常子结点被称作“左孩子”和“右孩子”。二叉树被用作二叉搜索树和二叉堆。随后他又和他人讨论起 ...
分类:
其他好文 时间:
2016-09-21 21:19:43
阅读次数:
131
题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利。但是,小L对数据结构的掌握实在十分渣渣。 所以,小L当时卡在了二叉树。 题目描述 在计算机科学中,二叉树是每个结点最多有两个子结点的有序树。通常子结点被称作“左孩子”和“右孩子”。二叉树被用作二叉搜索树和二叉堆。随后他又和他人讨论起 ...
分类:
其他好文 时间:
2016-09-18 23:48:31
阅读次数:
301
题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利。但是,小L对数据结构的掌握实在十分渣渣。 所以,小L当时卡在了二叉树。 题目描述 在计算机科学中,二叉树是每个结点最多有两个子结点的有序树。通常子结点被称作“左孩子”和“右孩子”。二叉树被用作二叉搜索树和二叉堆。随后他又和他人讨论起 ...
分类:
其他好文 时间:
2016-09-17 22:00:53
阅读次数:
162
二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
遍历顺序
遍历是对树的一...
分类:
其他好文 时间:
2016-09-07 22:59:19
阅读次数:
176
1 二叉堆和优先队列的概念 1.1 二叉堆 二叉堆堆是一个数组,它可以被看成一个近似的完全二叉树,树上每一个结点对应数组中的一个元素。除了最底层外,该树是完全充满的,而且是从左到右填充。表示堆的数组A包括两个属性:A.length给出数组元素的个数,A.heap_size表示有多少个堆元素存储在该数 ...
分类:
其他好文 时间:
2016-09-04 23:56:44
阅读次数:
260
定义 拥有权值观点的queue,,一个是返回最高优先级对象,一个是在底端添加新的对象。这种数据结构就是优先级队列(Priority Queue) 。 实现 利用max_heap完成,以vector表现的完全二叉堆。max_heap可以满足priority_heap所需要的依照权值高低自动递减的特性。 ...
分类:
其他好文 时间:
2016-08-31 12:04:44
阅读次数:
175
堆堆,也叫二叉堆,就是完全二叉树二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小... ...
分类:
其他好文 时间:
2016-08-14 14:22:27
阅读次数:
131
题目描述 Description 给定N(N≤500,000)和N个整数(较有序),将其排序后输出。 题目描述 Description 给定N(N≤500,000)和N个整数(较有序),将其排序后输出。 给定N(N≤500,000)和N个整数(较有序),将其排序后输出。 输入描述 Input Des ...
分类:
其他好文 时间:
2016-08-08 19:14:44
阅读次数:
109