第一章 数据结构与算法
1.1算法
算法基本特性
可行性:在设计一个算法时,必须考虑它的可行性
确定性:算法中的每个步骤必须是明确定义的,不允许模棱两可(向左转还是向右转,而不是转弯)
有穷性:算法必须在执行有限个步骤之后终止
足够的情报:算法要有一定的输入数据和必须要有输出结果
算法的基本要素
时间和空间复杂度
时间复杂度–算法的运算次数
时间复杂度与空间复杂度没有必然联系。但是也有以空间换时间或时间换空间的,此时,它们就会有影响。
1.2 数据结构的基本概念
数据结构
最小单位–数据项
基本单位–数据元素
数据结构的分类
数据结构的逻辑结构
数据结构的存储结构
数据结构的运算
1.3 线性表及其顺序存储结构
线性表
线性表的顺序存储结构
线性表:存储空间连续;按照逻辑顺序依次存放;可以随机访问数据元素;插入、删除需移动大量元素
前后件关系指的是数据的逻辑结构,逻辑结构分成线性结构和非线性结构
算法的空间复杂度是指算法运行所占的存储空间;数据的存储结构是指数据的逻辑结构在计算机中的表示
1.4 栈和队列
栈
栈的特点
E
栈支持子程序的调用
B
队列
队列特点
循环队列
1.5线性链表
线性链表
回顾顺序表(线性表的顺序存储结构)
线性链表的特点
1.6 树与二叉树
树
所有结点中最大的度 称为树的度 3
树的深度 4
二叉树
二叉树的物种基本状态
特殊二叉树:满二叉树,完全二叉树
满二叉树是完全二叉树
二叉树的性质
叶子结点总是比度为二的结点多一个
二叉树的遍历
前序遍历:根左右 ABDGECF
中序遍历:左根右 DGBEAFC
后序遍历:左右根 GDEBFCA
1.7查找技术
顺序查找
二分查找
1.8 排序
最坏的情况①希尔排序:n的1.5次 ②堆排序:nlog以2为底n的对数
快速排序
第二章 程序设计基础
2.1 2.2 程序设计风格以及结构化程序设计
程序设计方法与风格
序言性注释主要包括 程序的标题,功能的说明,主要的算法,模块的接口,开发历史,程序设计者,复审者和复审日期
结构化程序设计原则
结构化程序的基本结构
程序设计语言的基本成分是数据成分,运算成分,控制成分和传输成分
2.3 面向对象的程序设计
对象基本特点
继承
消息
多态性
第三章 软件工程基础
3.1 软件工程基本概念
软件=程序+数据+相关文档
软件分类
软件危机
软件工程
软件工程三要素
软件生命周期
需求分析
需求规格说明书的特点(SRS)
3.2 结构化分析方法(做什么)确定逻辑模型
数据流图(DFD)
数据字典是结构化分析的核心
定义时期:问题定义和可行性研究,需求分析
开发:概要设计、详细设计、实现、测试
维护:使用 维护
3.3结构化设计方法(怎么做)确定物理模型
软件设计的划分
软件设计基本原理
软件模块独立性
概要设计
程序结构图(SC)
详细设计
程序流程图:
需求分析 DFD
概要设计 SC(程序结构图)
详细设计 程序流程图
3.4 软件测试(尽可能发现错误)
静态测试和动态测试
白盒和黑盒测试
软件测试步骤
3.5程序的调试
黑盒测试:等价类划分,边界值分析,错误推断法
第四章 数据库设计基础
4.1数据库系统的基本概念
数据
数据库
数据库管理系统
数据库管理员
数据库系统(DBS)
数据库应用系统(DBAS)
数据管理三个阶段
数据库系统特点
三级模式和两级映射
概念模式:全局数据逻辑结构
4.2数据模型
ER模型
关系模型
列就是属性
4.3 关系代数
投影 列
选择 行
笛卡尔积:相乘 R*S
并:合起来
差 交
除:列剪去 找同时满足条件的
自然连接:共同属性连接(属性列增加)
4.4 数据设计与管理
数据库设计概述
数据库设计的步骤
需求分析:数据字典
概念设计:E-R图
逻辑设计:把E-R转换为关系模式
数据库管理