本人非科班出身,本科学了C语言、数据结构与算法,当时只是为了应付计算机二级考试,也没怎么用心学。随着工作的深入,个人觉得数据结构与算法还是需要深入学习一下。先看《大话数据结构》,等有时间了再看下《算法》与《算法导论》了。
数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据元素是组成数据的,具有一定意义的基本单位,比如人类社会中人就是数据元素,那么头部、手部、脚部等则是构成数据元素的数据项。
数据可以分为逻辑结构和物理结构。
集合结构是指数据元素只是同处于同一集合中,彼此之间并没有什么关系。
线性结构是指数据元素之间具有一对一的关系。
树形结构是指数据元素之间具有一对多的关系。
图形结构是指数据元素之间具有多对多的关系。
顺序存储结构是指数据元素存放在地址连续的存储单元中。
链式储存结构是指数据元素存在任意的存储单元中(不一定连续),通过指针可以找到具体的存储单元。
算法
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有序序列,并且每条指令表示一个或多个操作。
算法的五个基本特征:输入、输出、有穷性、确定性和可行性。
算法的时间复杂度T(n)=O(f(n))。它表示随时间规模n的增大,算法执行时间的增长率和f(n)的增长率相同,其中f(n)为时间规模n的某个函数。推导大O阶如果有n,则用只保留n的最高阶项;否则常数项直接取1。
网友评论