第一讲数据结构基本概念

数据结构

当我第一眼看到这个名次时我的第一反应是 数据 + 结构
然而到现在数据结构都没有一个统一的标准的答案。
(以下资料摘自百度百科)

数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。简而言之,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合。“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结构。 [1]
数据的逻辑结构和物理结构是数据结构的两个密切相关的方面,同一逻辑结构可以对应不同的存储结构。算法的设计取决于数据的逻辑结构,而算法的实现依赖于指定的存储结构。 [2]
数据结构的研究内容是构造复杂软件系统的基础,它的核心技术是分解与抽象。通过分解可以划分出数据的3个层次;再通过抽象,舍弃数据元素的具体内容,就得到逻辑结构。类似地,通过分解将处理要求划分成各种功能,再通过抽象舍弃实现细节,就得到运算的定义。上述两个方面的结合可以将问题变换为数据结构。这是一个从具体(即具体问题)到抽象(即数据结构)的过程。然后,通过增加对实现细节的考虑进一步得到存储结构和实现运算,从而完成设计任务。这是一个从抽象(即数据结构)到具体(即具体实现)的过程。 [3]

不管怎样数据结构是一门很重要的学科,无论是学术研究还是日后就业,很多地方都要用到数据结构。
如:学完C了,我们对数组运用很是熟练,添加新元素在末尾用数组很是方便,但是添加在中间呢?要把插入位置后面的元素全部后移,数据量小的话没啥问题,一旦数据较多,花费的时间就很多了(即便计算机一秒计算亿次)。这样的问题日后参加工作也是绝对会遇到的(用户的假如与退出),假如单单用数组的话,时间和内存的浪费可能都会较大,所以此时就要用到数据结构中的链表,需要时就申请内存不需要了就释放掉,时间上内存上都很友好。
这样的例子足够说明数据结构的重要性。

算法

程序设计 = 数据结构 + 算法

本人认为算法就是一个程序的灵魂,这个程序运行效率与内存的占用都与算法有很大的关系。效率高内存占用少的程序是我们都喜欢的,所以算法也是非常非常重要的一部分。

算法的特性

  1. 输入输出
  2. 有穷性
  3. 确定性
  4. 可行性

算法的时间复杂度
时间复杂度是衡量一个算法是否优秀的一个重要标准。所以在设计算法时,一定要估算好时间复杂度。
时间复杂度用 O( ) 表示,例如一个程序需要运算 n 次,则时间复杂度为 O( n )
假如一个程序运算次数满足函数 f(n) = 2 * n ^ 2 + 3 * n + 1 则此程序时间复杂度记为 O( n ^ 2)
一次项与常数项呢? 因为数据很小时比如就个位数,那么低次项对时间复杂度影响也相当大,但是数据很庞大时,低次项影响基本可以忽略,每项的项数也是如此

算法空间复杂度
一般输入数据所占空间只与问题本身有关,此时算法空间复杂度只需要考虑该算法所需辅助单元占用的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值