基本概念
1.定义
- 数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。
- 数据结构是ADT(Abstract Data Type)抽象数据类型的物理实现。
- 数据结构是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。
2.例子
-
书架放书
主要考虑新书插入和书籍查找问题
随便放 利于插入 不利于查找
顺序放 利于查找 不利于插入
-
整数1-N打印
循环实现与递归实现
循环实现对空间要求小,递归实现对栈的压力大,当问题规模变大,程序会出现异常。
-
多项式求值
循环实现
提取公因数实现
解决问题方法的效率,跟数据的组织方式有关
解决问题方法的效率,跟空间的利用效率有关
解决问题方法的效率,跟算法的巧妙程度有关
3.数据结构
3.1定义
数据对象在计算机中的组织方式,分为物理结构和逻辑结构,数据对象必定与一系列加在其上的操作相关联,完成这些操作所用的方法就是算法
3.2ADT抽象数据类型
- 数据类型: 数据对象集以及在这个数据集合上的相关操作集
- 抽象: 描述数据类型的方法,不依赖于具体实现
抽象与硬件(机器、操作系统、存储介质)、软件(算法、编程语言)无法
只关心 “是什么” 不关心 “怎么做”
抽象可以提高代码的通用性,减少重复代码
4.算法
算法(Algorithm)就是解决问题的方法
4.1定义
- 一个有限指令集
- 接受输入(有些情况不需要输入)
- 产生输出
- 一定有限步骤之后终止
- 每一条指令集必须
- 有充分明确的目标,不可以有歧义
- 计算机能处理范围之内
- 描述应该不依赖于任何一种计算机语言及具体实现手段
4.2指标
如何评判一个算法的性能,通过时间复杂度和空间复杂度来评判
1.空间复杂度
根据算法编写的程序在执行的时候占用存储单元的长度S(n),由于现在计算机的存储空间都比较大,因此对于空间复杂度主要考虑递归程序,并且有很多算法都是使用空间换时间。
2.时间复杂度
根据算法编写的程序在执行时所耗费的时间的长度T(n),程序的实际运行时间容易受到其它因素(计算机的配置、操作系统、编程语言)的影响,因此一般会将程序中语句执行的次数作为程序的时间复杂度
n 代表问题的规模
分析算法的效率,一般关注如下两种时间复杂度
- 最坏时间复杂度 T worst(n)
- 平均时间复杂度 T avg(n)

当一个程序的时间复杂度为n^2时,第一反应就是能不能将复杂度下降到nlogn
本文探讨了数据结构在计算机科学中的核心作用,如书架与整数打印的例子展示其在实际问题中的应用。讲解了数据结构的定义、ADT抽象数据类型,以及算法的定义和性能评估指标。重点关注时间复杂度和空间复杂度,以及如何通过优化数据结构提升算法效率。
2951

被折叠的 条评论
为什么被折叠?



