常见的时间复杂度递增:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、...、指数阶O(2^n)。
线性表:
线性表是用一组地址连续的存储单元依次存储线性表,逻辑上相邻的数据元素物理次序也是相邻的。
线性表的顺序存储结构是一种随机存取的存储结构。
其查找算法的时间复杂度为O(n)。
线性表:
用一组任意的存储单元存储线性表的数据元素,存储单元可以是连续的,也可以是不连续的。
其查找算法的时间复杂度为O(n)。
下面是两种重要的线性结构:栈和队列。
栈:先进后出(LIFO结构),是限定仅在表位进行插入或者删除操作的线性表。
队列:先进先出。队空条件:Q.front == Q.rear,队满条件:(Q.rear+1)%MAXQSIZE == Q.front
广义表:广义表是线性表的推广,也称列表,广泛用于人工智能等领域的表处理语言LISP语言。(暂时不深入)
树:树是(n>=0)个节点的有限集,它或为空树,或为非空树。
非空树:1)有且仅有一个称之为根的节点;2)除根节点以外的其余节点可分为m(m>0)个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为子树。
二叉树:和树的区别在二叉树每个节点至多只有两课子树,二叉树的子树有左右之分,其次序不能任意颠倒。
二叉树的性质:
1.二叉树的第i层上至多有2^(i-1)个结点(i>=1)。
2.深度为k的二叉树至多有2^k-1个结点,(k>=1)。
3.对任何一颗二叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1.