数据结构
解决问题方法的效率,和数据的组织方式、空间的利用效率以及算法的巧妙程度有关。
数据结构定义
1.数据对象在计算机中的组织方式:逻辑结构、物理存储结构
2.数据对象必定与一系列加在其上的操作相关联
3.完成这些操作所用的方法就是算法
抽象数据类型
1.数据类型:数据对象集、数据集合相关联的操作集
2.抽象:描述数据类型的方法不依赖于具体实现:
a:与存放数据的机器无关
b:与数据存储的物理结构无关
c:与实现操作的算法和编程语言均无关
只描述数据对象集和相关操作集“是什么”,并不涉及 “如何做到”的问题
算法定义
算法(Algorithm)
-
一个有限指令集
-
接受一些输入(有些情况下不需要输入)
-
产生输出
-
一定在有限步骤之后终止
-
每一条指令必须
a.有充分明确的目标,不可以有歧义
b.计算机能处理的范围之内
c.描述应不依赖于任何一种计算机语言以及具体的实现 手段
好的算法
1.空间复杂度S(n) —— 根据算法写成的程序在执行时 占用存储单元的长度。这个长度往往与输入数据的规模有关。空间复杂度过高的算法可能导致使用的 内存超限,造成程序非正常断。
2.时间复杂度T(n) —— 根据算法写成的程序在执行时 耗费时间的长度。这个长度往往也与输入数据的规模有关。时间复杂度过高的低效算法可能导致我们在有生之年都等不到运行结果。
3.在分析一般算法的效率时,我们经常关注下面 两种复杂度
a.最坏情况复杂度 Tworst( n )
b.平均复杂度 Tavg( n )
**Tavg( n ) <= Tworst( n ) **