![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法分析-C语言描述
fktr_70
Talk is cheap,show me code.
展开
-
算法分析
常见符号 a. Θ—增长率相同 b. Ο—增长率小于等于—上界 c. Ω—增长率大于等于—下界 d. Ο—增长率严格小于 2.最大子序列问题 递归方法—分治策略—N logN 联机算法—常量空间线性时间运行的在线算法–N#include<cstdio>#include<algorithm>using namespace std;int *arr;int n;void Rea原创 2015-12-28 00:28:03 · 325 阅读 · 0 评论 -
引论
级数公式 (1)几何级数公式: 如果 ,则 且当N趋向无穷,结果趋向于. (2) 算数级数公式: 一般的, 特别的(调和和),k=-1时, 常见证明方法 (1)归纳证明法 a.基准情形 b.归纳假设 c.进行证明 (2) 反证法 假设结论不成立,推出矛盾原创 2015-12-27 21:29:42 · 260 阅读 · 0 评论 -
表、栈和队列
1.抽象数据类型 (1). 抽象概念的存储数据结构及其可能的操作集合。 (2) 好处: a. 编写一次,重复调用,代码重用率高 b. 修改实现代码不影响接口使用代码,利于修改和调试 (3)目标: a. 函数模块化 b.实现和接口分离 2.表 (1)数组实现 空间开销大,且不利于插入和删除,故一般不用来原创 2015-12-28 19:23:08 · 277 阅读 · 0 评论 -
树
1. 预备知识 (1)实现 孩子兄弟表示法 (2)遍历及其应用 a.先序遍历 b.后序遍历 2.二叉树 (1)表达式树 a. 先序遍历–前缀表达式–不常用 b. 中序遍历–中缀表达式–直观 c. 后序遍历–后缀表达式–求值无须考虑优先规则 (原创 2015-12-29 00:03:35 · 450 阅读 · 0 评论 -
散列
1.基本思想 结构:包含有关键字的具有固定大小的数组。每个关键字被映射到从0到TableSize-1这个范围中的某个数,并且被放到适当的单元中,这个映射就叫做散列函数。理想状态下它应该运算简单并且保证任何两个不同的关键字映射到不同的单元,不过这是不可能的,因为单元数目有限而关键字实际上是用不完的,因此我们寻找一个散列函数,该函数要在单元之间均匀的分配关键字,并决定当两个关键字散列到原创 2015-12-30 15:27:08 · 551 阅读 · 0 评论 -
优先队列<堆>
1.模型 两个基本操作: Insert等价Enqueue DeleteMin删除最小者–Dequeue 2.简单的实现 (1)简单链表–遍历删除Min或者排序删除Min (2)使用二叉查找树。 反复除去Min会使得树不平衡,并且BST还支持许多不需要的操作。 3.二叉堆 优先队列的实现普遍使用二叉堆,堆有两个性质–结构性和堆序性,对堆的一次操作可能破坏两个性质中的一个,因此堆的操作原创 2015-12-31 01:25:08 · 721 阅读 · 0 评论 -
排序
1.预备知识 基于比较的排序 2.插入排序 O(N^2) 3.简单排序算法的下界 (1)数组的一个逆序是指数组中具有性质i 小于j,但A[i]>A[j]的序偶(A[i],A[j]). 逆序数是需要由插入排序(非直接)执行的交换次数.交换两个不按原序排列的相邻元素消除一个逆序。由此可得可以通过计算排列中的平均逆序数而得出插入排序平均运行时间的精确的界. (2) 定理1:N个互异数的数组的平原创 2016-01-01 21:29:25 · 398 阅读 · 0 评论 -
不相交集ADT
1.等价关系 等价关系就是具有以下三个性质的关系: a.自反性 b.对称性 c.传递性 2.动态等价性问题 (1)输入N个集合的类,每个集合含有一个元素,初始的描述是所有的关系均为false,每个集合的元素都互异,即这些集合不相交. (2)两种运算 a.Find,返回包含给定元素的集合,即等价类的名字 b.Union添加关系,首先看a和b是不是已经有关系,即对a和b执行Find并检原创 2016-01-03 21:51:25 · 366 阅读 · 0 评论