数据结构基础知识

引入

作为科班毕业的计算机专业的学生,对于数据结构这么课程可谓是又恨又爱,恨是它很难,爱是它很重要(无论是考研还是找工作)。所以今天就是我数据结构这块知识的开篇。开篇博客我将简单介绍数据结构的基础概念、逻辑结构和物理结构的关系

基础知识

数据:数据是对世界上客观存在的物体的数字化表示,数字化体现在它能被计算机处理
数据元素:数据元素是对世界上某一类客观存在的物体的总称,可以理解为数据由许多不同的数据元素组成
数据项:是数据不可分割的最小数据单元,它可以理解为组成数据元素的基本组成部分,即某一类客观存在的物体的组成部件
数据对象:数据的子集,性质相同的数据元素组成的集合,性质相同体现在数据元素的数据项相同
结构:即关系
数据结构:由存在关系的数据元素组成的集合

数据结构分类

数据结构分为逻辑结构和物理结构:
逻辑结构:即重点突出数据元素间的关系,比如一对一、一对多、多对多
物理结构:即逻辑结构在计算机内的体现,即逻辑结构如何在计算机内体现,就是由物理结构来体现的
有一句话,我个人觉得很经典:“逻辑结构面向现实中的问题,物理结构是面向计算机”

数据结构学习思路

对于数据结构的学习很多同学都觉得所学结构,比如:链表、队列、栈等他们之间无关系或者说没有相似的特点,因此感觉数据结构这门课没有前后的关联。其实不然,前面我介绍过数据结构分为:逻辑结构、物理结构,其实数据结构这门课程就是按不同的逻辑结构在计算机内的物理结构来阐述的,比如:逻辑结构有:集合、线性表、树、图;物理结构:线性存储、链式存储。它是按逻辑结构下的每个结构对应这两个物理结构来讲述的,如:线性表有顺序存储和链式存储,在顺序存储下有:我们常说的数组(其实不应该这么说,因为顺序存储是一种理论,而数组是高级语言对该理论的具体实现,但为了好理解暂且就这么说吧),链式存储下:单链表、双向链表、单链表的循环链表、双链表的循环链表、静态链表(用顺序存储来实现链式存储的特点)

算法

算法是解决问题的步骤描述,它有几大特点,这里就不说了,主要说下它的时间复杂度。时间复杂度是时间效率的一种等效替换,即用时间复杂度来代表一个算法的时间效率。这是一种对算法时间效率统计的事前估计。而时间复杂度为什么能替换时间效率呢?原因是:时间复杂度是对算法基本操作和输入规模(N)的一个函数即f(n)=算法基本操作执行的次数,而算法的时间消耗主要是这些基本操作,因此一定程度上时间效率T(n)=f(n),但为了更准确,采用了数学表达式T(n)=O(f(n)),而不同的算法时间效率的比较,还有一个概念:函数的渐近性,即f(n)与q(n),存在一个N当n>N时f(n) > q(n)就说f(n)在N后渐近增长q(n)即比q(n)增长的更快。因此有了上面的这些基础后不同算法间的比较便可以估算出来。

数据结构与算法的关系

数据结构是一种工具,算法是解决某个具有某一种数据结构特点的问题的步骤,因此数据结构是算法解决问题的辅助工具,而算法依靠于数据结构,严格意义上两者是两个不同的学科,但分开的话两者都不完美,因此常会把数据结构理解为算法,比如有同学的数据结构学的好就认为它编程能力算法强,算法强,数据结构就一定很好这样的概念。

本篇博客,主要是数据结构的引入

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值