目录
第1章
为了编写一个“好程序”,必须分析待处理的对象的特征,以及各处理对象之间存在的关系。
计算机解决一个具体问题时,需要经过以下几个步骤:
从具体问题抽象出一个适当的数学模型。
设计一个解此数学模型的算法。
寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学语言加以描述。
例如:求解梁架结构中应力的数学模型为线性方程组;预报人口增长情况的数学模型为微分方程。
编出程序,进行测试、调整直到最终解答。
开发一些文档类管理系统……在这类文档管理的数学模型中,计算机处理的对象之间通常存在着的是一种最简单的线性关系,这类数学模型可称为线性的数据结构。
1.4 算法和算法分析
1.4.3 算法效率的度量
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记做T(n) = O(f(n)).它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度(asymptotic time complexity),简称 时间复杂度。
1.4.4 算法的存储空间需求
类似于算法时间的复杂度,把时间换成空间,那么就得到了“空间复杂度”:S(n) = O(f(n)).
第2章 线性表
2.1 线性表的类型定义
一个线性表示n个数据元素的有限序列。
学过mysql的可以理解为,mysql的那个表结构就是线性表。
线性结构的特点
第3章 栈和队列
第4章 串
第5章 数组和广义表
第6章 树和二叉树
第7章 图
第8章 动态存储管理
第9章 查找
第10章 内部排序
第11章 外部排序
第12章 文件
主要内容来自:《数据结构》严蔚敏 吴伟民
脑图链接