1、算法复杂度分为:时间复杂度和空间复杂度
一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。
时间复杂度:是指执行算法所需要的计算工作量,也即算法的执行时间 (注意:是算法的执行时间,而不是算法程序的执行时间)
空间复杂度:是指执行这个算法所需要的内存空间
解析:算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间复杂度和空间复杂度。
2、算法的特征
有穷性:是指算法必须能在执行有限个步骤之后终止
确切性
输入项:0个或多个
输出项:1个或多个
可行性(有效性):每个计算步骤都可以在有限时间内完成
3、数据结构
数据的逻辑结构分为:线性结构和非线性结构
线性结构是n个数据元素的有序(次序)集合
常用的线性结构有:线性表、栈、队列、双队列、数组、串
非线性结构:
常用的非线性结构:二维数组、多维数组、广义表、树(二叉树)、图
数据结构中的线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构
如(a0,a1,a2,……,an),a0为第一个元素,an为最后一个元素,此集合即为一个线性结构的集合
相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个直接后继
4、线性数据结构的3种形式:
列表:线性表、普通的数组形式、链表形式
队列:可以理解成“ 停车场 ”,先进先出,删除在队首,添加在队尾
栈:可以理解成“ 电梯 ”,后进先出,添加和删除都在栈顶实现