今天开始学习数据结构,所谓 程序=数据结构+算法 可见数据结构的重要性。
我使用的的是《大话数据结构》的PDF,有兴趣的小伙伴可以私聊我发这本书的资源。
偶尔也看看清华大学出版社的《算法与数据结构》第三版,当然主要还是在学上面这本。
好了,废话不多说,进入正题。
开宗立义:数据结构是工具,算法是利用工具来解决问题。
一,基本术语:
1.数据:
是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并能输入给计算机处理的符号集合。
比方说人类是一堆数据。
2.数据元素:
是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。
比如说,对于人类,数据元素就是人。
3.数据项:
一个数据元素由若干个数据项组成。(数据项是数据不可分割的最小单位)
比如,对一个数据元素张三来说,他的腿脚,手鼻之类的内部,电话号码,兴趣爱好之类的外部都是他的数据项。
4.数据对象:
是性质相同的元素的集合,也是数据的子集。
性质相同解释为:数据元素具有相同数量和类型的数据项。
5.数据结构:
是互相之间存在一种或多种特定关系的数据元素的集合。
1.逻辑结构:
数据对象中数据元素之间的相互关系。
1.1 集合结构:
1.2 线性结构:
1.3 树形结构:
1.4 图形结构:
2. 物理结构:
2.1 顺序存储结构:
2.2 链式存储结构:
第一章没啥,主要是将数据结构做了一个概要,我们继续看第二章:
第二章主要讲的是复杂度的判定方法,且深入讨论了时间复杂度,空间复杂度带过。
1.算法的特性:
1.1输入输出:
具有零个或多个输入,具有至少一个输出(打印或返回)
1.2有穷性:
在执行了有限的步骤后,会自动结束而不会出现死循环,并且步骤在可接受的时间内完成。
(此有穷非彼有穷,时间要的久也不行)
1.3确定性:
算法的每一步骤都具有确定的含义,不会出现二义性。
1.4可行性:
算法的每一步都是可行的,即,每一步都能通过执行有限的次数完成。
2算法设计的要求:
2.1正确性:
2.2可读性:
便于阅读,理解和交流。
2.3健壮性:
当输入数据不合理时,算法也能做出相关反应,而非产生异常或莫名的结果。
2.4时间效率高,存储量低
3.大O记法:
3.1步骤:
3.2常见时间复杂度比较及命名:
3.3最坏情况与平均情况:
我们一般谈及的是最坏时间复杂度。
数据结构入门1就到这里,我们今天主要是对数据结构做了一个初步的了解。