1 基本概念
1.1 什么是数据结构
【思考】如何在书架上摆放图书?
找到空的书架,按照类别对图书进行分类,在每一种小类中按书名首字母按序排列。
【结果】被摆了一道
【例2】循环和递归的区别:递归对空间的耗用很大。
解决方法的效率和空间利用效率有关。
【例3】写程序计算给定多项式在给定点x处的值。f(x)=a0+a1x+……+an-1xn-1+anxn(代码见文末)
什么是数据结构?
数据对象的逻辑结构+物理存储结构
+算法
描述数据结构很好的方法:抽象 数据类型
数据类型:数据对象集、数据集合相关联的操作集
抽象:描述数据类型的方法不依赖于具体实现
与存放数据的机器无关
与数据存储的物理结构无关
与实现操作的算法和编程语言无关
只描述数据对象集和操作集是什么,不探讨如何实现。
1.2 什么是算法
一、算法(Algorithm):
- 一个有限的指令集;
- 接受一些输入(有些情况不需要输入);
- 产生输出;
- 一定在有限步骤之后终止;
- 每一条指令必须:有充分明确的目标,计算机能处理的范围之内,描述应不依赖于任何一门计算机语言或具体实现手段。
二、评判算法好坏的标准:
- 空间复杂度 S(n):占用存储单元的长度。
- 时间复杂度 T(n):耗费时间的长度。
1.3 应用实例:最大子列和
算法一:暴力求解