8.2日讲座记录-高级数据结构
2011-08-02 15:11
218 查看
我苦逼,被我睡过去了。
ppt摘录如下:
一、二叉堆是一个严格的完全二叉树,它的特点就是可以在O(logn)的时间内对元素进行插入和删除,并且可以在O(1)的时间内找到最大元素或者最小元素。
注:
1、通常将根节点为整个树中最小元素的二叉堆叫做小根堆,反之则为大根堆。
2、堆在同层次上是无序的,也就是说堆的关系只是本节点与子节点和父节点之间的关系,与兄弟节点无关。
3、其存储结构可以是顺序存储,因为它是一个完全二叉树,已知一个节点的下标(序号),可以知道其子节点和父节点的下标(序号)。
4、一般情况下我们都采用连续一段数组的存储方式来存储二叉堆。已知一个节点n,其父节点为n/2(这里为整除),其左孩子节点为n*2,右孩子为n*2+1。
二、树状数组是查询和维护时间复杂度均为O(logn)的数据结构
引入:
·在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。
·但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S
都会发生变化。
·可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需要O(n)的时间。当n非常大时,程序会运行得非常缓慢。
·“树状数组”可以较高的效率解决此类问题。
看不太懂,暂缓。
[b]
[/b]
注:1、树状数组应用实例(poj 2352)
注:看ppt的时候无语,发现老师太坑爹,一上午把这些都讲了,看不懂以下先放着........上网上找点资料再看.....
三、线段树
四、并查集
ppt摘录如下:
一、二叉堆是一个严格的完全二叉树,它的特点就是可以在O(logn)的时间内对元素进行插入和删除,并且可以在O(1)的时间内找到最大元素或者最小元素。
注:
1、通常将根节点为整个树中最小元素的二叉堆叫做小根堆,反之则为大根堆。
2、堆在同层次上是无序的,也就是说堆的关系只是本节点与子节点和父节点之间的关系,与兄弟节点无关。
3、其存储结构可以是顺序存储,因为它是一个完全二叉树,已知一个节点的下标(序号),可以知道其子节点和父节点的下标(序号)。
4、一般情况下我们都采用连续一段数组的存储方式来存储二叉堆。已知一个节点n,其父节点为n/2(这里为整除),其左孩子节点为n*2,右孩子为n*2+1。
void push(int a) //a为插入的关键字 { int temp,w; n++; s =a; w=n; while ((w!=1)&&(s[w]<s[w/2])) {//逐层调整关键字的位置 if (s[w]<s[w/2]) { temp=s[w]; s[w]=s[w/2]; s[w/2]=temp; } w=w/2; }
二、树状数组是查询和维护时间复杂度均为O(logn)的数据结构
引入:
·在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。
·但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S
都会发生变化。
·可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需要O(n)的时间。当n非常大时,程序会运行得非常缓慢。
·“树状数组”可以较高的效率解决此类问题。
看不太懂,暂缓。
[b]
[/b]
注:1、树状数组应用实例(poj 2352)
注:看ppt的时候无语,发现老师太坑爹,一上午把这些都讲了,看不懂以下先放着........上网上找点资料再看.....
三、线段树
四、并查集
相关文章推荐
- 8.2日讲座记录-高级数据结构
- C#【Fox即时通讯核心】 开发记录之四(服务端多线程异步处理数据 主程序大致结构)
- OpenCV 学习记录3 数据结构和基本绘图
- Python中的高级数据结构
- Python cookbook(数据结构与算法)根据字段将记录分组操作示例
- 关于在牛客网上做题的解析之数据结构(每日20道题,记录错误和不懂的题)
- JVM学习记录-JVM的内存结构管理和运行时数据区理解
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- 记录我的数据结构(C语言)学习历程(2017年3月30号开始):
- 用C/C++设计Lu结构、字典、类等高级数据类型
- C++ 高级数据类型(五)—— 数据结构
- python中的高级数据结构
- Linux基础和C高级,day8,9,10,数据结构
- 数据结构基础(9) --单链表的设计与实现(2)之高级操作
- Java数据结构与算法--高级排序
- 数据结构之高级排序算法
- boot 库学习记录--数据结构
- Revit二次开发高级专题讲座:访问Revit模型中的几何数据以及对象间关系判断方法(点击下载)
- 高级编程之数据结构
- 有两个数据据服务器上有两个一样结构的数据库,现想将一服务器上的一数据库里的一个表的一部份记录插入到另一服务器上的一数据库的一表中.