搞定《数据结构》(1)

这是第三遍系统的回顾《数据结构》了,希望能把学习的感受记录下来,方便后续深入学习。

第一章 绪论

1.1 数据结构三要素

首先,从数据结构的三要素说起,如下图所示:

(一)逻辑结构:

 逻辑结构是指元素之间的逻辑关系,与数据的存储无关,是独立与计算机的。分为线性结构和非线性结构。

线性结构:元素之间1对1关系

树形结构:元素之间1对多关系

图结构:元素之间多对多关系

至于具体的分类后面再详细讨论。

(二)存储结构

又称物理结构,是逻辑结构的计算机语言实现。

(1)顺序存储:逻辑相邻的元素物理上也相邻。

       优点:实现随机存取,每个元素占用最少的存储空间

       缺点:只能使用相邻的一整块存储单元,可能产生较多外部碎片。

(2)链接存储:不要求逻辑相邻的元素物理也相邻,借助指针表示元素之间的逻辑关系。

       优点:没有碎片。

       缺点:指针占用额外空间,只能顺序存取。

(3)索引存储:存储信息的同时,建立索引表,索引表中的每一项(关键字,地址)称为索引项。

       优点:检索快。

       缺点:增加了索引表,占用了较多空间;在增删的时候需要修改索引表,花费较多时间。

(4)散列存储:根据关键字计算出存储地址,又称为Hash存储。

      优点:检索、增删很快。

      缺点:如果散列函数不好,则可能出现冲突,解决冲突又增加时间和空间开销。

 

错题精选

1.以下与数据的存储结构无关的术语是(D

A.循环队列 B.链表 C.哈希表 D.栈

栈是抽象的数据类型,表示逻辑,物理上用顺序或链式实现均可。

2.链式存储设计时,结点内的存储单元地址(A

A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续

链式存储设计时,各个不同结点的存储空间可以不连续,但结点内的存储单元地址必须连续。

1.2 算法和评价

(1)算法的五个特性:有穷性、确定性、可行性、输入、输出

(2)“好”的算法目标:正确性、可读性、健壮性、效率与低存储量需求

1.2.1 算法效率的度量

(1)时间复杂度

频度:语句在算法中被重复执行的次数。

算法中所有语句的频度之和记为T(n),是问题规模n的函数,时间复杂度主要是分析T(n)的数量级。

算法中的基本运算(最深层循环的语句)的频度与T(n)同级,所以通常采用算法中基本运算的频度f(n)来分析算法的时间复杂度,记为:

T(n)=O(f(n))

最坏时间复杂度:最坏情况下,算法的时间复杂度。

平均时间复杂度:所有可能输入实例在等概率出现的情况下,算法的期望运行时间。

最好时间复杂度:最好情况下,算法的时间复杂度。

 一般考虑最坏时间复杂度,保证算法的时间不会比它还长。

分析时间复杂度时,两条规则:

(1)加法规则:T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))

(2)乘法规则:T(n)=T1(n)*T2(n)=O(f(n))*O(g(n))=O(f(n)*g(n))

常见的渐进时间复杂度:

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)

(2)空间复杂度:算法耗费的存储空间。

 

参考文献:

[1] 王道论坛, 数据结构联考复习指导2017

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值