堆排序 //堆是一棵完全二叉树或近似完全二叉树;若任何一非叶子节点i满足:value[i] <= value[2i+1] && value[i] <= value[2i+2]则称为小顶堆; 若任何一非叶子节点i满足:value[i] >= value[2i+1] && value[i] >= val ...
分类:
编程语言 时间:
2016-09-27 18:03:09
阅读次数:
148
1、二叉树 特点:每个结点至多有2颗子树,并且子树有左右之分。 性质: 在二叉树的第i层至多有2i-1个结点; 深度为k的二叉树至多有2k-1个结点; 对任何一颗二叉树而言,若其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1。 二叉树的存储结构: 顺序存储结构(仅适用于完全二叉树) 链式存 ...
分类:
其他好文 时间:
2016-09-25 17:10:56
阅读次数:
173
1.栈数据结构 特点:先进后出 输出: data2 data1 2.队列数据结构 特点:先进先出 输入: data1 data2 3.堆得使用 特点:是完全二叉树 4.固定尺寸数组 特点:定义特定大小的数组 ...
分类:
Web程序 时间:
2016-09-25 00:57:22
阅读次数:
240
A,给一棵完全二叉树,第一个操作,给两个点,两点路径上的所有边权值都增加w,第二个操作,给两个点,求两点路径上的所有边权值和。 我看一眼题就觉得是树链剖分,而我又不会树链剖分,扔掉。 后来查了题解,首先数据范围是1e18不可能是树剖,其次完全二叉树啊!不是普通的树啊!!sb。。。 //我做过此题,没 ...
分类:
其他好文 时间:
2016-09-21 10:11:51
阅读次数:
133
堆排序是一种树形选择排序,是对直接选择排序的有效改进。 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于( ...
分类:
编程语言 时间:
2016-09-20 23:43:04
阅读次数:
189
算法9 完全二叉树 树结构的基本特征 (1)在一个树结构中,有且仅有一个节点没有直接前驱,这个节点就是树的根节点; (2)除了根节点外,其余结个节点有且仅有一个直接前驱; (3)每个结点都可以有任意多个直接后继; 树有一些基本的概念要清楚 父结点和子结点; 兄弟结点; 结点的度; 树的度; 叶结点; ...
分类:
编程语言 时间:
2016-09-19 17:56:40
阅读次数:
241
树结构,尤其是二叉树结构是算法中常遇见的,这里根据学习过程做一个总结。 二叉树所涉及到的知识点有:满二叉树与完全二叉树、节点数目的关系、节点数与二叉树高度的关系、层次遍历、深度优先遍历、广度优先遍历等等。 这里对二叉树的基本结构实现c++版本以及python版本的代码,并且实现二叉树的前中后序遍历过 ...
分类:
编程语言 时间:
2016-09-17 23:40:24
阅读次数:
218
堆是完全二叉树 排序之前,首先要建立一个堆,比如给定一个数组[1,3,5,6,2,4,8,6,9],建立二叉树如下: 对排序分为大顶堆和小顶堆 大顶堆:父节点的关键字>=左右孩子节点的关键字 小顶堆:父节点的关键字<=左右孩子节点的关键字 以大顶堆为例,对上述完全二叉树进行堆排序 从最后一个非叶结点 ...
分类:
编程语言 时间:
2016-09-17 12:09:39
阅读次数:
206
主要实现了冒泡排序、堆排序、归并排序、快速排序。其中归并排序、快速排序运用了递归算法。 冒泡排序:主要是用了双重循环,第一层循环控制整个排序的步长,第层循环在大于第一层循环的基础上从顺序表末端依次比较,将最小或者最大的数排到当前起一层循环的开始处。 堆排序 堆是具有下列性质的完全二叉树:每个节点的值 ...
分类:
编程语言 时间:
2016-09-16 21:12:59
阅读次数:
231
堆是完全二叉树的结构,因此对于一个有n个节点的堆,高度为O(logn)。 最大堆:堆中的最大元素存放在根节点的位置。 除了根节点,其他每个节点的值最多与其父节点的值一样大。也就是任意一个子树中包含的所有节点的值都不大于树根节点的值。 堆中节点的位置编号都是确定的,根节点编号为1,每一层从左到右依次编 ...
分类:
编程语言 时间:
2016-09-16 18:12:31
阅读次数:
261