第一章 概论《数据结构与算法》

一、数据结构

1. 逻辑结构的表示(K,R)

K:结点集合 R:关系集合(讨论的重点)
R的分类
·线性结构:全序性(可比较前后),单索性(唯一的前驱,唯一的后继)
·树型结构:唯一的前驱,多个后继
·图结构:多个前驱,多个后继

2. 存储结构

空间相邻(基本单位 字节)
随机访问(按地址)
存储映射方法
·顺序:特点紧凑,不浪费空间。如数组(适合“读”,增删少的情形)
·链接:利用指针,在内存中不连续。增删容易,定位困难。如链表
·索引:把结点的整数索引值映射到存储地址(顺序存储的推广)
·散列:我们希望找到一个散列函数,使得尽量不发生哈希冲突(索引的推广)

哈希表
①线性探测表:将冲突的数据往后放
②哈希桶:将冲突的数据放在同一个位置下,用单链表管理
负载因子:数据个数/空间数;一般来说,当负载因子达到0.7就要进行扩容

抽象数据类型(ADT,Abstract Data Type)
抽象数据类型由 <数据对象,数据关系,数据操作>三个不可分割的部分组成的三元组:
ADT抽象数据类型名{
数据对象D: <数据对象的定义>
数据关系S: <数据关系的定义>
数据操作P: <基本操作的定义>
}ADT抽象数据类型名

二、算法

1. 分类

穷举,回溯搜索,动态规划,递归分治,贪心

2. 复杂性

不能用绝对的时间单位(如微妙、纳秒)来度量,而考虑用输入数据规模N及其所需基本操作B的数来度量。

与编程语言,机器等因素相关,如C语言比Pathon快

P类问题(P:polynominal,多项式):存在多项式时间算法的问题。
NP类问题(NP:Nondeterministic polynominal,非确定性多项式):能在多项式时间内验证得出一个正确解的问题。
P类问题是NP问题的子集,因为存在多项式时间解法的问题,总能在多项式时间内验证他。
NPC类问题(Nondeterminism Polynomial complete):存在这样一个NP问题,所有的NP问题都可以约化成它。只要解决了这个问题,那么所有的NP问题都解决了。

渐进算法分析(asymptotic algorithm analysis):只考虑增长速度很快的部分,忽略不能显著改变函数量级的部分

i.大O表示法

若存在正数c和n0,使得n>n0时,f(x)<=cg(x),则称f(x)是O(g(x))的。注意,我们寻找的g(x)应该是所有上限最小的一个。
特别地,O(1)表示算法的复杂性是常数时间,即与输入数据无关。例如哈希表中没有发生哈希冲突的情况。

ii.Ω表示法

若存在正数c和n0,使得n>n0时,f(x)>=cg(x),则称f(x)是Ω(g(x))的。注意,我们寻找的g(x)应该是所有下限最大的一个。
大O表示法与Ω表示法的区别在于不等号的方向不同。

iii.Θ表示法

若存在正数c1,c2以及n0,使得n>n0时,c1g(n)<=f(n)<=c2g(n),则称f(n)是Θ(g(n))的。这是大O表示法的上限与Ω表示法的下限相同的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值