数据结构是本学期的专业课,我对它的重视程度不亚于上学期的 C语言。可惜疫情原因,不能在小黑板上听老师讲课了。观感大打折扣。
What
我们知道在计算机中解决一个实际问题,需要进行以下几个步骤。
- 从具体问题中抽象出一个适当的数学模型。
- 设计一个解决此类数学模型的算法。
- 进行编译与最后的调试。
而传统的线性方程组、微分方程等数学模型在非数值计算问题等情况中已不适用了,所以才出现以线性结构,树形结构为首的新型数学模型。所以为什么要学习数据结构呢?我觉得它更多的时候是给了我们一个解决问题的方向。
Before
基本概念
在学习之前,我们需要了解一下在数据结构中常用的基本概念和专业术语。
- 数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成,所以数据项是数据不可分割的最小单位,而数据对象则是性质相同的数据元素的集合。
- 数据元素相互之间的逻辑关系称之为结构,而常见的结构有集合、线性结构、树形结构、图形结构或网状结构。
- 数据的逻辑关系在计算机中的表示,我们称之为物理结构或储存结构。常见的物理结构有顺序储存结构和链式储存结构。前者的逻辑关系是通过元素在储存器中的相对位置实现的,而后者是通过储存地址的指针实现的。
- 数据类型用以刻画操作对象的特征,一般可分为原子类型和结构类型。可参考C语言的基本数据类型和结构体。
- 抽象数据类型可参考JAVA中抽象类的使用
算法和算法分析
算法是对特定问题求解步骤的一种描述,一般由伪代码构成。其具有5大特性:有穷性、确定性、可行性、输入和输出。
而怎样才能称的上一个好算法呢?我们一般看它是否具备4个特征:正确性、可读性、健壮性、效率与低存储量需求。其中效率和存储量我们一般用时间复杂度和空间复杂度来考量。
- 时间复杂度 T(n)=O(f(n))
通常的做法是,从算法中选取一种对于所研究问题来说是基本操作的原操作,以该基本操作重复执行的次数(取最高次幂,并省略其系数)作为算法的时间量度。
- 空间复杂度 S(n)=O(f(n))
若输入的数据所占空间只取决于问题本身,和算法无关,则只需要分析除输入和程序之外的额外空间,否则应同时考虑输入本身所需空间。若额外空间相对于输入数据量来说是常数,则称此算法为原地工作
e.g. T(n)=O(n2) S(n)=O(1)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
x++;
本文阐述了数据结构在计算机科学中的核心地位,解释了为何学习数据结构至关重要。它不仅提供了解决实际问题的方法,还介绍了数据元素、数据结构类型、算法及其分析等基本概念。

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



