一、算法的基本概念
计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。
1、算法的基本特征:可行性,确定性,有穷性,拥有足够的情报。
2、算法的基本要素:算法中对数据的运算和操作、算法的控制结构。
3、算法设计的基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。
4、算法设计的要求:正确性、可读性、健壮性、效率与低存储量需求
二、算法的复杂度
1、时间复杂度:指执行算法所需要的计算工作量
2、空间复杂度:执行这个算法所需要的内存空间
三、数据结构的定义:
1、数据在计算机中的组织。包括逻辑结构,存储结构、数据运算。
2、逻辑结构:集合结构;线性结构;树形结构;图形结构
3、存储结构:顺序存储;链式储存;散列存储
4、数据运算:查找、插入、删除
四、线性表
线性表示一种逻辑结构,其存储结构分为:顺序存储和链式存储。
1、顺序表:线性表的顺序存储结构。一般用一维数组来实现。
数据操作:
插入:O(n)
删除O(n)
查找O(1)
2、链表:线性表的链式存储结构。有单链表、单循环链表、双链表、双循环链表
数据操作:
插入:O(n)
查找:O(n)
删除:O(n)
【比较】
从上述结构来看,链表的总体性能比顺序表差,但是,链表在进行频繁插入、删除操作时,就有一定的优势,例如,在同一个位置插入10个元素,顺序表在进行每次插入时都需要进行移动操作,而链表在第一次插入后,由于已经确定了插入的位置,所以后面每次插入仅为O(1)。所以,
(1)当线性表需要大量查找,又很少需要插入、删除操作时,宜采用顺序存储结构;当线性表需要大量查找、删除操作时,宜采用链表。
(2)当线性表中元素个数变化较大、或者不知道其个数时,采用链表较好。
线性表从存储结构角度分为顺序表和链表,而从数据操作上分分为栈和队列
3、栈:只能在栈顶进行插入删除操作的线性表。
按照不同的存储结构分为顺序栈和链栈。
栈的数据操作:
插入,删除:O(1)
查找:O(n)
4、队列:只能在一端进行插入,另一端进行删除操作线性表。
按照不同的存储结构分为顺序队列和链式队列。
队列的数据操作:
插入、删除:O(1)
查找:O(n)
五、树形结构
二叉树
满二叉树
完全二叉树
B数
AVL数
红黑树
请参考:各种二叉树的介绍
六、图形结构
七、排序
八、查找