NCRE 2.1公共基础知识详解
2.1.1数据结构与算法
1. 算法的基本概念
-
算法是指对解题方案的准确而完整的描述。 解决问题的操作步骤
-
基本特征:
可行性-达到预期目的;
确定性-步骤明确;
有穷性-有限时间完成;
拥有足够的情报-拥有足够的输入信息和初始化信息的情况下才有效 -
算法复杂度
时间复杂度 执行算法所需要的计算工作量,用运算次数来度量,而非
具体时间(受到计算机状况,程序设计语言以及许多其他细节影响)。具体分析时,输入不同算法所执行的基本运算次数不同。空间复杂度 执行这个算法所需要的内存空间。
输入数据所需存储空间+程序本身所占存储空间+算法执行过程中所需的额外空间 额外空间=程序执行+数据结构
原地工作 额外空间不随问题规模的变化而变化
2.数据结构的基本概念
- 数据结构是指相互有关联的数据元素的集合 数据+结构 B=(D,R)
逻辑结构和物理结构
图形表示
线性与非线性结构
3. 线性表及其顺序存储结构
线性表=线性结构 唯一根节点,唯一终端节点
两个基本特征:所有元素所占的存储空间连续 、 元素按逻辑依次存放
4. 栈和队列
- 栈 所有的插入删除都限定在表的同一端栈顶 支持子程序调用
修改原则:先进后出 - 队列 在一端插入,另一端删除
修改原则:先进先出
5.线性单链表双向列表循环列表的运算
类型 | 优点 | 缺点 |
---|---|---|
顺序表 | 可以随机存取任意节点,无需存储逻辑关系 | 运算效率低,存储空间不易扩充,不利于存储空间的动态分配 |
链表 | 运算时只需改变指针,存储空间易于扩充 | 需要额外的空间存储逻辑关系,存储密度低于顺序表 |
6.树的基本概念
- 1树是一种非线性结构
基本概念 | 含义 |
---|---|
父节点(根) | 每一个节点只有一个前件,没有前件的节点只有一个简称树的根 |
子节点 | 每一个节点可以有多个后件 |
叶子节点 | 没有后件的节点 |
度 | 一个节点所拥有的后件个数称为节点的度,所有节点中最大的度成为树的度 |
深度 | 层数 |
子树 | 以某一个子节点为根构成的树 |
树的节点数等于树中所有节点的度之和再加1
-
2二叉树
特点:为空或唯一根节点,每个节点最多有两棵子树,子树有左右之分性质:
-
1.在二叉树的第k层上,最多有2k-1(k>=1)个节点
2.深度为m的二叉树中,最多有2m-1个节点
3.对任何一棵二叉树,度为零的节点,总是比度为2的节点多一个
4.具有n个节点的二叉树其深度至少为[log2n] +1 -
满二叉树
除最后一层外,每一层上的所有节点都有子节点的二叉树 -
完全二叉树
除最后一层外,每一曾上的节点树均达到最大值,在最后一次只缺少右边的若干节点的二叉树
特点:叶子节点只在最后两层出现;若右子树的深度为m,左子树的深度为m或m+1
5.具有n各个节点 的完全二叉树的深度为log2n +1 -
3二叉树的存储结构 链式存储结构
左指针域指向左子节点;右指针域指向右子节点
对于满二叉树和完全二叉树可以按层次进行顺序存储 -
4二叉树的遍历 不重复地访问所有节点
原则:先左后右
①前序遍历:根→左子树→右子树
②中序遍历:左子树→根节点→右子树
③后序遍历:左子树→右子树→根节点
7.查找技术
查找技术 | 适用范围 |
---|---|
顺序查找 | 线性表无序,链式存储线性表 the best 1次,the worst n次,avg n/2 |
二分法查找 | 有序顺序线性表(从小到大) the worst log2n |
8.排序技术
排序技术 | 小类 | 特征 |
---|---|---|
交换类排序法 | 冒泡排序法 | 消去逆序直到所有元素有序 THE WORST 长度为n的线性表排列,n(n-1)/2 |
- | 快速排序 | 以一个数字为分界,小于放前面,大于放后面 the worst n(n-1)/2 |
插入类排序法 | 简单插入排序 | 将无序表的数据插入有序表the worst n(n-1)/2 |
- | 希尔排序 | 取整数,分若干组nr |
选择类排序法 | 简单选择排序法 | 不断选择最小的元素与前面的元素进行交换the worst n(n-1)/2 |
- | 堆排序法 | 完全二叉树the worst nlog2n |