堆排序同直接选择排序一样是选择排序的一种。堆排序是借助一种数据结构——堆来完成排序,堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
什么是堆:
关于二叉树这里就不叙述了。堆(二叉堆)可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示(普通的一般的二叉树通常用链表作为基本容...
分类:
编程语言 时间:
2015-08-14 19:05:50
阅读次数:
161
代码:
#include
#include
#define N 1005
using namespace std;
int a[N];
int T[N];
int pos;
int n;
int cmp(int a,int b)
{
return an)
return;
int l=i<<...
分类:
其他好文 时间:
2015-08-14 17:07:22
阅读次数:
161
线段树节点的左儿子[a,(a+b)/2]右儿子[(a+b)/2,b]
这个很重要
把线段树当成完全二叉树算,开到3*N就可以,但最好是4*N
#include
using namespace std;
int a[50005];
struct {
int sum;
int left,right;
}b[50005*4];
void build(int left,int rig...
分类:
其他好文 时间:
2015-08-13 22:21:51
阅读次数:
122
Given a complete binary tree, count the number of nodes.
Definition of a complete binary tree from Wikipedia:
In a complete binary tree every level, except possibly the last, is completely fille...
分类:
其他好文 时间:
2015-08-13 01:13:54
阅读次数:
117
1.简单排序2.树形选择排序思想:将一个数组中的数两两一组,更大的数(或者更小的数)作为这两个数的父节点,依次向上构建一个完全二叉树。树的根结点即为最大的数。输出该数字之后,对应的叶子结点换成负无穷。然后在此基础上重新构建二叉树,直到所有结点均为负无穷为止。复杂度:第一个值的复杂度为n,其他值的复杂...
分类:
编程语言 时间:
2015-08-10 23:44:29
阅读次数:
230
ProblemB.TreeInputfile:tree.inOutputfile:tree.outTimelimit:2secondsMemorylimit:256megabytes香香有一棵高度为h的完全二叉树,根节点的标号为1,高度为1,对于每个非叶子节点i,高度h,它的左儿子的标号为2*i,高...
分类:
其他好文 时间:
2015-08-09 22:01:01
阅读次数:
110
对于一般的二叉树,统计节点数目遍历一遍就可以了,但是这样时间复杂度O(n),一下就被卡住了。这题首先要明白的是,我们只需要知道叶子节点的数目就能统计出总节点树。想法1: 既然是完全二叉树,我肯定是从左子树开始看,如果左子树不完整,右子树就不用再遍历了。由此形成一个递归的搜索过程,先搜索左子树,如果....
分类:
其他好文 时间:
2015-08-07 22:02:19
阅读次数:
133
在上一篇数据结构的博文《数据结构(三):非线性逻辑结构-二叉树》中已经对二叉树的概念、遍历等基本的概念和操作进行了介绍。本篇博文主要介绍几个特殊的二叉树,堆、哈夫曼树、二叉搜索树、平衡二叉搜索树、线索二叉树,它们在解决实际问题中有着非常重要的应用。本文主要从概念和一些基本操作上进行分类和总结。
一、概念总揽
(1) 堆
堆(heap order)是一种特殊的表,如果将它看做是一颗完全二叉树的...
分类:
其他好文 时间:
2015-08-05 01:06:22
阅读次数:
208
敌兵布阵
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 57787 Accepted Submission(s): 24420
Problem Description
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子...
分类:
编程语言 时间:
2015-08-03 14:52:46
阅读次数:
126
接着上一次对非线性逻辑数据结构树的内容,开启对二叉树的深入复习和总结。首先还是先回顾一下几个重要的概念:
一、回顾
1. 满二叉树与完全二叉树
满二叉树指的是除了叶子节点外所有的节点都有两个子节点。这样可以很容易的计算出满二叉树的深度,要掌握满二叉树的一些性质。
完全二叉树则是从满二叉树继承而来,指的所有的节点按照从上到下,从左到右的层次顺序依次排列所构成的二叉树称之为完全二叉树。所以可以...
分类:
其他好文 时间:
2015-08-02 23:29:41
阅读次数:
205