算法
1.解题方案的准确而完整的描述
可行性
确定性
有穷性
2.对象
算数运算,逻辑运算,数据传输
3.结构
顺序,选择,循环
4.算法工具
流程图,N-S结构化流程图,算法描述语言
5.时间和空间复杂度
时间复杂度:基本运算次数
空间复杂度:运行需要存储空间//两者相互独立
数据结构
1.数据元素是数据的基本元素,数据元素由数据项组成,数据项是数据的最小单位
2.数据结构,相互有关的数据元素
逻辑结构(逻辑关系)
线性:有且有一个根节点,每个节点最多一个前件和后件
线性表,春->夏->秋->冬
顺序表:连续,依次,随机访问,插入,删除需移动大量元素
线性链表: a.各数据结点的存储空间可以不连续;
b.各数据元素的存储顺序和逻辑循序可以不一致;
c.线性表的链式存储所占存储空间大于顺序存储结构;
d.查找结点时链式储存要比顺序存储慢;
e.链式存储插入删除元素比顺序存储灵活。
双向链表
非线性结构:树形,网状
存储结构(计算机的存放方式)
顺序存储结构
链式存储结构
运算
插入,删除,查找,排序
栈
只能在栈顶进行插入和删除线性表
先进后出原则
栈底不变,栈顶变化
栈支持子程序调用和具有记忆功能
bottom,top
入栈,栈满,出栈
带链的栈与顺序存储的栈,优点不受连续存储空间大小的限制,不考虑栈满的问题
队列
在一端进行插入,而在另一端进行删除的线性表。
先进先出
队头指针front,队尾指针rear,入队,出队;
队列中元素随队头指针和队尾指针的变化而动态变化。
循环队列:逻辑上的环状
rear>front:s=rear-front
rear<front:s=容量+rear-front
rear=front:s=1或者s=0
树
n个元素的有限集合。它有且仅有一个称为根的元素;其余元素是互不相交的子树。
树的结点树即为树中所有结点的度数之和加1
1.父结点、子结点;
2.根结点、叶子结点;
3.结点的度、树的度(所有结点中最大的度称为树的度)
4.树的深度
5.子树
二叉树:
只有一个根结点;
每一个结点最多有两颗子树,且分别称为该结点的左子树与右子树。
0,1,2
满二叉树
除最后一层外,每一层上的结点数均达到最大值。
完全二叉树
除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺右边的若干结点。
【性质】
1.在二叉树的第K层上,最多有2k-1个结点;
2.深度为m的二叉树最多有2m-1个结点;
3.度为0的结点(叶子结点)总比度为2的结点多一个;
n个结点的二叉树深度至少为[log2n]+1。
树的遍历
前序遍历
根结点、左子树、右子树
中序遍历
左子树、根结点、右子树
后序遍历
左子树、右子树、访问根结点
【题目总结】
二叉树的前序和中序相同,说明该二叉树没有左子结点,只有右子结点,所有节点接成一串
二叉树的后序和中序相同,说明该二叉树没有右子结点,只有左子结点,所有节点接成一串
查找
1.顺序查找 ,n, 无序表和链式表(无序和有序)
2.二分查找,顺序存储的有序表,logn
排序
排序 平均时间 最坏情况
交换类 冒泡排序 n(n-1)/2 n(n-1)/2
快速排序 n(n-1)/2 n(n-1)/2
插入类 插入排序 n(n-1)/2 n(n-1)/2
希尔排序 nlog2[n] n(1.5次方)
选择类 选择排序 n(n-1)/2 n(n-1)/2
堆排序 nlog2[n] nlog2[n]
堆排序
将元素按顺序组成一颗完全二叉树,当且仅当满足
大根堆,所有结点的值大于或等于左右结点的值
小根堆,所有结点的值小于或等于左右结点的值