学习时间
2021-01-14
学习内容
数据结构的概念
数据是描述客观事物的数值、字符以及能输入计算机且能被处理的各种符号集合
数据元素是组成数据的基本单位,其中数据项是数据不可分割的最小单位
数据对象是性质相同的数据元素的集合
数据结构指的是互相之间存在一种或多种特定关系的数据元素集合
数据类型是一组性质相同的值集合,以及定义在这个值集合上的一组操作的总称
数据结构的内容
数据的逻辑结构
是指数据元素之间逻辑关系地描述,用二元组表示为:
Data_Structure=(D,R)
其中D是元素的有限集,R是D关系的有限集
一般分为两大类线性结构和非线性结构
-
线性结构
线性表、栈、队列、字符串、数组、广义表 -
非线性结构
树、图、(集合)
数据的存储结构
分为顺序存储和链式存储
- 顺序存储的特点是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系
- 链式存储的特点是借助指针表示数据元素之间的逻辑关系
算法
算法的概念
算法是解决问题的一系列操作步骤的集合。简单地说,算法是解决问题的策略、规则和方法。
算法的特性
1、有穷性
2、确定性
3、可行性
4、有输入
5、有输出
特别的:在设计算法时要注意:程序可以不满足有穷性。
算法的评价标准
1、正确性
2、可读性
3、健壮性
4、高效率和低存储量需求
算法的描述
一般来说,描述算法的工具可以是自然语言、框图或者高级程序设计语言
算法性能分析
1、时间复杂度
(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
(2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
2、空间复杂度
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。算法的输入输出数据所占用的存储空间是由要解决的问题决定的,是通过参数表由调用函数传递而来的,它不随本算法的不同而改变。存储算法本身所占用的存储空间与算法书写的长短成正比,要压缩这方面的存储空间,就必须编写出较短的算法。
算法执行期间所需要的存储空间包括三部分
- 算法程序所占的空间
- 输入的初始数据所占的存储空间
- 算法执行过程中所需要的额外空间
一般的,通常以算法执行时间作为衡量算法优劣的主要指标