考研二战_数据结构_day1_绪论部分

目录

前言

一、数据结构的基本概念

1、数据结构要学什么?

2、数据、数据对象、数据元素、数据项

3、如何理解

        首先是资料上的理解方式:

        其次是我自己的理解:

4、数据结构

5、数据类型与抽象数据类型

        1、数据类型

二、数据结构三大要素——逻辑结构、数据的运算、存储结构(物理结构)

1、逻辑结构

        1、集合

        2、线形结构

        3、树形结构

        4、图形结构

2、数据的运算

3、存储结构(物理结构)

        顺序存储:

        链式存储:

        索引存储:

        散列存储:

三、算法

1、什么是算法?

2、算法的特性

        有穷性:

        可行性:

        确定性:

        输入:

        输出:

3、好算法的特性

四、时间复杂度与空间复杂度

总结


前言

        本人一战失利,到考试时有一种空洞感,正是所谓的感觉学了,实际上什么也没记住。而且复习时间有点紧,复习速度过快,很多知识点就记了个大概。正所谓满瓶水晃不响,半瓶水直晃荡,既然一战失利,那我就要吸取教训,不能妄自菲薄,掉以轻心,要重新考一次,给自己和一直支持我的家人一个交代。

        前天我找到了一篇文章,说写博客有用,于是我决定用这种方法来重新复习考研的数据结构。


一、数据结构的基本概念

1、数据结构要学什么?

        从这门课的角度上来说,“要学习如何用程序代码将现实问题信息化,学习如何用计算机高效处理信息以创造价值。”

        这句话是什么意思,其实我也没能很好理解。是指现实问题能抽象为信息数据,然后可以用一定的程序算法来处理这些数据?还是说,现实世界本身就是数据的集合,我们可以利用程序来清晰地分辨,并利用计算机来对这些数据进行加工?

2、数据、数据对象、数据元素、数据项

        数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

        数据对象是具有相同性质的数据元素的集合,是数据的一个子集。

        数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干数据项组成。

        数据项是构成数据元素的不可分割的最小单位。若数据项由多个更细分的属性构成,则称其为组合项。

        数据元素之间不一定都是数值大小的关系,因此有时可以用数据结构来描述两个数据元素之间的关系。

3、如何理解

        首先是资料上的理解方式:

        1、首先将数据元素看成个体。举个例子:你的CSDN账号信息就是一个数据元素,其中ID、名称、码龄等等都是数据项。其中有的数据项,比如加入CSDN时间就是YY-MM-DD形式,其中的年、月、日也可以看成是其细分属性,则加入CSDN时间也可成为组合项。

        2、所有CSDN账号信息加到一起,就是一个数据对象。

        3、CSDN账号信息数据对象、QQ账号数据对象、微信账号数据对象等等数据对象加到一个就是数据。

        其次是我自己的理解:

        1、数据元素就是数据对象中的一个个体。那么如果将数据的范围变更一下,例如人的数据,那么便可以将我看成一个数据对象的话,我身上的器官就是一个个数据元素,器官的名称、大小、形状、位置等等就是数据项。我的性格、我的学历也可以是一个个的数据元素。许多人的集合就是人类的数据。

        2、如果将我看作是数据,那我的学历就是一个数据对象,那我的高中学历、大学学历是否就可以视为数据元素?如果可以,那么数据、数据对象、数据元素等概念都是有着一个相对的范围,就看使用者将数据的范围扩大到哪一个层面。

4、数据结构

        数据元素之间并不一定是数值关系。就拿人类数据来看,我爷爷、我爸爸、我,三个数据对象之间是有联系的,那么这种联系就可以用数据结构来进行表示。

        注意:不同数据元素可以形成相同的数据结构;相同的数据也可以形成不同的数据结构。

5、数据类型与抽象数据类型

        1、数据类型

        是一个值的集合和定义在此集合上的一组操作的总称。

        比如:bool数据类型,其值为:true与false,其操作有:与或非。

        比如:int数据类型,其值为:-2^{31}2^{31}-1,其操作有:加减乘除、模运算

        等。

        2、抽象数据类型(Abstract Data Type,ADT)

        ADT是抽象数据组织及与之相关的操作,定义一个ADT就是在定义其逻辑结构数据的运算,即定义了一个数据结构;而只有定义了ADT,才能去实现其存储结构(物理结构)

二、数据结构三大要素——逻辑结构、数据的运算、存储结构(物理结构)

1、逻辑结构

        1、集合

        数据元素与数据元素之间除了同属一个集合外,并无其他关系

        比如:你我他的CSDN账号之间并无其他联系。只是因为是CSDN账号才被放到了一起,那你我他的CSDN账号的数据结构就是集合

        2、线形结构

        一对一;除了两端外都有唯一的前驱与后驱;

        ps:我突然想到循环队列貌似不符合,因为它每一个节点都有前后驱。但是又转念一想,它连两端都没有。。。

        比如:线性表、链表、队列、栈等等

        3、树形结构

        一对多

        比如:二叉树、平衡二叉树、红黑树等等等等

        4、图形结构

        多对多

        比如:有向图、无向图等等等等

2、数据的运算

        根据逻辑结构以及实际的需求来进行。

        比如:bool类型的运算不可能出现乘或除。树类型之间也不能进行乘或除。

3、存储结构(物理结构)

        分为两种:顺序存储与非顺序存储。非顺序存储还可分为链式存储、索引存储、散列存储(Hash)

        顺序存储:

        逻辑上相邻的元素存储在物理地址也相邻的存储单元中。

        链式存储:

        逻辑上相邻的元素不需要存储在物理地址相邻的存储单元中。

        索引存储:

        在存储数据时,建立附加的索引表。

        散列存储:

        根据关键字直接计算出该元素的存储地址,也称为哈希存储。

三、算法

1、什么是算法?

        算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每条指令表示一个或多个操作。

        补充:程序 = 数据结构(食材) + 算法(步骤);程序设计:设计一个好的数据结构 + 设计一个好的算法

        例如:炒鸡蛋是一个程序,鸡蛋、盐、油就是数据结构,中间步骤就是算法。

2、算法的特性

        有穷性、可行性、确定性、输入、输出

        有穷性:

        算法在有限次运行后即可得到结果,每次运行时间也是有限的。注:算法有穷,程序可以无穷。

        如:炒鸡蛋时,“铲子铲一下”就是算法,可以一直运行铲一下,最后鸡蛋可能会炒没。但是“一直铲一下”这个命令就不是算法,因为其不会停止,不会结束运行。

        可行性:

        算法中的操作都可以通过已经实现的基本运算执行有限次来实现。

        如:在低等数学领域可以算1+1=2,但是不能算微积分。

        确定性:

        每条指令都有确切的含义,相同的输入得到相同的输出。

        输入:

        0个或多个输入。

        输出:

        1个或多个输出。

3、好算法的特性

        正确性:正确处理问题;可读性:人们理解方便;健壮性:对于非法输入有识别能力,不会得到莫名其妙的输出;时间复杂度低;空间复杂度低。。。。。。

四、时间复杂度与空间复杂度

        具体问题具体分析。


总结

        数据结构就是数据元素之间的关系,数据元素就是个体。数据结构有三大要素,逻辑、运算、存储。算法有5个特征,有穷、可行、确定、输入、输出。

        回过头来看数据结构,还有许多知识我没有完全掌握,只是囫囵吞枣、不求甚解。希望写博客能助我消化这份知识。明天开始应该需要有代码的实现过程,希望一切顺利。

        其中若有纰漏与错误之处,希望各位看官加以指正,本人感激不尽。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值