一.简要了解数据结构
什么是数据结构
数据结构是什么?要学习数据结构,当然要知道数据结构是什么。百度百科这么说:
数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。简而言之,数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合。“结构”就是指数据元素之间存在的关系,分为逻辑结构和存储结构。
圈重点: 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合。“结构”就是指数据元素之间存在的关系。
数据结构的两个层次
第一:逻辑结构
数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。
1、逻辑结构与数据元素本身的形式、内容无关
2、逻辑结构与数据元素的相对位置无关
3、逻辑结构与所含结点个数无关
逻辑结构可以划分为:线性结构和非线性结构。
线性结构:有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个后继。例如:线性表、栈、队列、串。
非线性结构:一个结点可能有多个直接前趋和直接后继。例如:树、图。
第二:存储结构(也称为物理结构)
存储结构可以划分为:顺序存储结构和链式存储结构
顺序存储结构:借助元素在存储器中的相对位置来表示数据元素间的逻辑关系。
链式存储结构:借助指示元素存储地址的指针表示数据元素间的逻辑关系。
二.算法
什么是算法
百度百科这样解释:
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
圈重点:算法是为了解决某类问题而给出的指令
程序设计=算法+数据结构
一个算法必须要满足五个特性
- 有穷性 。算法必须在执行完有穷步之后结束,有穷时间,有穷步数。
- 确定性。算法必须给出确切的意义,不能产生歧义。
- 可行性。算法中所有的操作都可以通过已经实现的基本操作运算来实现。
- 输入。一个算法有0个或多个输入。
- 输出。一个算法有一个或多个输出。
如何评价算法优劣
可以从以下几个方面:
- 正确性。能够在有限的运行时间内得到正确结果。
- 可读性。一个好的算法,必须是便于其他人理解和交流,然后易于计算机执行,可读性强的算法相比于难懂的算法更易于人们接受。,并且易于其他人去维护。
- 健壮性。当输入的数据非法时,可以面对这种状况做出反应,提示出错误或者可以根据输入的数据而做出相应处理,而不是产生错误的输出结果。
- 高效性。高效性包括时间和空间两个方面。时间高效是指算法设计合理,执行效率高,也就是时间复杂度来衡量,空间高效是指算法占用存储容量,可用空间复杂度来衡量。