敲黑板!数据结构hin重要!之前看视频,学得不是很扎实,so想要重新再爱一次它~[旺柴]
数据结构+算法=程序设计
概念
数据(data)—所有能输入到计算机中去的描述客观事物的符号
数据对象(Data Object):相同特性数据元素的集合,是数据的一个子集
数据元素(data element)—数据的基本单位,也称结点(node)或记录(record)
数据项(data item)—有独立含义的数据最小单位,也称域(field)
关系:数据>数据元素>数据项
推荐阅读:blog.csdn.net/qq_31442743…
1.1 数据结构
- 逻辑结构
- 集合结构
- 线性结构
- 树形结构
- 图形结构
- 物理结构
- 顺序存储(数组)
- 链式存储(指针)
例题:
数据结构的二元组形式为:DS = (D, S)。
其中 D 是数据元素的集合; S 是 D 中数据元素之间的关系集合,并且数据元素之间的关系是使用序偶来表示的。序偶是由两个元素 x 和 y 按一定顺序排列而成的二元组,记作<x , y>, x 是它的第一元素, y 是它的第二元素。
[解]
1.如果 D != null,而S == null,则该数据结构为集合结构。
2.如果 D = {01, 02, 03, 04, 05},S = {<02,04>, <03,05>, <05,02>, <01,03>},则该数据结构是线性结构。
在这些数据元素中有一个可以被称为“第一个”的数据元素;还有一个可以被称为“最后一个”的数据元素;除第一个元素以外每个数据元素有且仅有一个直接前驱元素,除最后一个元素以外每个数据元素有且仅有一个直接后续元素。这种数据结构的特点是数据元素之间是 1对 1 的联系,即线性关系。
3.D = {01, 02, 03, 04, 05, 06},S = {<01,02>, <01,03>, <02,04>, <02,05>, <03,06>}
除了一个数据元素(元素 01)以外每个数据元素有且仅有一个直接前驱元素,但是可以有多个直接后续元素。这种数据结构的特点是数据元素之间是 1 对 N 的联系,即树结构。
4.D = {01, 02, 03, 04, 05}
S = {<01,02>, <01,05>, <02,01>, <02,03>, <02,04>, <03,02>,<04,02>, <04,05>, <05,01>, <05,04>}:
每个数据元素可以有多个直接前驱元素,也可以有多个直接后续元素。这种数据结构的特点是数据元素之间是 M 对 N 的联系,即图结构。
1.2 算法
1.2.1 算法特性
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
1.2.2 算法设计
- 正确性
- 可行性
- 健壮性
- 高效率和低存储量需求
1.2.3 算法分析
时间复杂度
程序大概的执行次数(不是执行时间)。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
空间复杂度
该算法所耗费的存储空间,它也是问题规模n的函数。其是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。