数据结构之绪论

本文阐述了数据结构在计算机科学中的核心地位,解释了为何学习数据结构至关重要。它不仅提供了解决实际问题的方法,还介绍了数据元素、数据结构类型、算法及其分析等基本概念。

数据结构是本学期的专业课,我对它的重视程度不亚于上学期的 C语言。可惜疫情原因,不能在小黑板上听老师讲课了。观感大打折扣。

What

​ 我们知道在计算机中解决一个实际问题,需要进行以下几个步骤。

  1. 从具体问题中抽象出一个适当的数学模型。
  2. 设计一个解决此类数学模型的算法。
  3. 进行编译与最后的调试。

​ 而传统的线性方程组、微分方程等数学模型在非数值计算问题等情况中已不适用了,所以才出现以线性结构,树形结构为首的新型数学模型。所以为什么要学习数据结构呢?我觉得它更多的时候是给了我们一个解决问题的方向。

Before

基本概念

​ 在学习之前,我们需要了解一下在数据结构中常用的基本概念和专业术语。

  1. 数据元素数据的基本单位,有时一个数据元素可以由若干个数据项组成,所以数据项是数据不可分割的最小单位,而数据对象则是性质相同的数据元素的集合。
  2. 数据元素相互之间的逻辑关系称之为结构,而常见的结构有集合、线性结构、树形结构、图形结构或网状结构。
  3. 数据的逻辑关系在计算机中的表示,我们称之为物理结构或储存结构。常见的物理结构有顺序储存结构链式储存结构。前者的逻辑关系是通过元素在储存器中的相对位置实现的,而后者是通过储存地址的指针实现的。
  4. 数据类型用以刻画操作对象的特征,一般可分为原子类型结构类型。可参考C语言的基本数据类型和结构体。
  5. 抽象数据类型可参考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++;

传送门:http://adolesce.cn/archives/4.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值