这段时间,开启了自己的数据结构的学习之旅,从头慢慢学,本来参考的学习资料上面的示例代码是C的,但是习惯了写java,就慢慢用java开写~
参考资料《零基础学数据结构》第二版[机械工业出版社 陈锐]
什么是数据结构
数据是一门研究如何用计算机描述事物及其关系的学问,是计算机学科的专业基础课程,数据结构把数据划分为“集合”、“线”、“树”和“图”四种,后面三种为重点研究对象。
其中需要掌握的最重要的思想便是:如何将所面临的问题转换为计算机语言。
直白一点就是将一堆基本的数据按照某种顺序组织起来。
对应实际的编程效果大概就是原来50行的代码,采用某种结构后现在只需要30行,emm大概就这种特效吧。
基本概念术语
1、数据
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
2、数据元素
它是数据的基本单位,数据元素也叫做结点或记录。在计算机程序中通常作为一个整体进行考虑和处理。有时,一个数据元素可由若干个数据项组成,例如,一本书的书目信息为一个数据元素,而书目信息的每一项(如书名、作者名等)为一个数据项。数据项是数据的不可分割的最小单位。
3、数据对象
性质相同的数据元素的集合,是数据的一个子集。
4、数据结构
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
5、数据类型
变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。所有变量都具有数据类型,以决定能够存储哪种数据。
数据的逻辑结构和存储结构
一、逻辑结构
数据的逻辑结构描述的是数据对象中元素之间的相互关系。
1、集合
emm和那个数学是的集合一个意思,一堆诗句要么属于一个集合要么就没有关系
2、线性结构
数据元素之间的关系都是一对一的,而且都存在一种先后次序关系。
3、树形结构
元素之间存在一种一对多的层次关系
4、图结构
元素之间都是多对多的关系,类似一张网把所有元素连在一起。
二、存储结构
又叫物理结构,是指数据的逻辑结构在计算机中的存储形式。
1、顺序存储结构
把数据存储在一组地址连续的存储单元中,逻辑关系和物理关系一致~
2、链式存储结构
数据可以是连续的存储也可以不连续,依靠指针来表示数据元素之间的逻辑结构。
算法
算法是解决特定问题的步骤的描述,算法具有有穷性,确定性,可行性,输入和输出,表示算法在执行有限的步骤后会自动结束。不会自己进入无限循环,且算法的每一步都有明确的含义,且每一步都是可行的,且算法需要输入,能根据输入得到最终的结果。
通俗的说算法就是一道菜的做法,比如做一碗泡面,我们需要拆开袋子,烧好开水,拿出调料,把调料撒好。把面泡好,而对于这份泡面的做法我们的输入就是一袋泡面,而输出就是一碗泡面,而不同做泡面的方法决定着泡面好不好吃,有没有灵魂,复不复杂,大概这就是算法,大家可以理解下
对于算法我们需要保证以下几点
1、算法的正确性
确定我们最终做好的是泡面而不是挂面
2、算法的可读性
做泡面的步骤不要写的花里胡哨的,我需要清晰明了的让人知道怎么做泡面
3、算法的健壮性
我们要对用户的异常输入进行及时的判断,比如我在做法中说,我必须要泡面如果是其他的,你就参考其他的做法,这就异常处理
4、高效率和低存储量
我这个泡面的做法,只需要几行字就写出来了,而且做起来特别快,不需要几个小时
算法的其他概念知识可以参考书本,相信会有更好的理解
第一次写文章,比较杂乱,多多包涵。