1.3、数据结构的起源:
1.数据结构:一门研究非数值计算的程序设计问题的操作对象,以及他们之间的关系和操作等学科
2.数据:描述客观事物的符号
3.数据元素:是组成数据的、有一定意义的基本单位,也被称为记录
4.数据项:一个数据元素可以由若干个数据项组成,是数据不可分割的最小单位
5.数据对象:是性质相同的数据元素的集合,是数据的子集
6.数据结构:数据间的关系
一、逻辑结构:数据对象中数据元素之间的相互关系
1.集合结构:数据元素除了同属于一个集合外,他们之间没有其他关系
2.线性结构:数据元素之间是一对一的关系
3.树形结构:数据元素之间存在一对多的层次关系
4.图形结构:数据元素之间是多对多的关系
备注:逻辑结构是针对具体的问题的,是为了解决某个问题,在对问题的理解基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系
二、物理结构|存储结构:数据逻辑结构在计算机中的存储形式
1.顺序存储:把数据元素存放在地址连续的存储单元中
2.链式存储:把数据元素存放在地址任意的存储单元中
关键:数据的存储结构应正确反映数据元素之间的逻辑关系
难点:如何存储数据元素之间的逻辑关系
抽象数据类型:是指一个数学模型及定义在该模型上的一组操作
三、数据类型:是指一组性质相同的值的集合以及定义在此集合上的一些操作的总称
1.原子类型:是不可以再分解的基本类型,包括整形、实型、字符型等
2.结构类型:由若干个类型组合而成,是可以再分解的,比如整形数组
四、算法:解决特定问题求解步骤描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作
特性: 1.输入输出:算法具有零个或多个输入,具有至少一个或多个输出
2.又穷性:算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成
3.确定性:算法的每一个步骤都有确定的含义不会出现二义性
4.可行性:算法的每一步必须是可行的,也就是说,每一步都能够通过执行有限次数完成
要求: 1.正确性:
2.可读性:便于阅读理解和交流
3.健壮性:当输入数据不合法时,算法做出相关的处理
4.时间效率高和存储量低
五、算法事前分析估量
1.问题的输入规模:输入量的多少
六、算法时间复杂度:表示问题规模n的增长,算法时间执行的增长率,记作:T(n) = O(f(n)),T:语句总的执行次数,f(n):问题规模n的某个函数
1.大O记法:O()来体现算法时间复杂度的记法
2.常数阶:O(1)
3.线性阶:O(n)
4.平方阶:O(n方)
如果两个函数:f(n)和g(n),如果存在一个N,使得当n>N的时候,f(n)>g(n),那么我们说f(n)的增长渐进快于g(n);
1.我们可以忽略加法常数,
2.与最高次项相乘的常数并不重要
3.最高次项大的函数会随着n的增长,结果也会增长的特别快
4.判断一个算法的效率时,函数的常数和其他次要项常常可以忽略,而更应该关注最高阶项的阶数
七.推导大O阶方法:
1.用常数1取代运行时间中的所有加法常数
2.在修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在且不是1,则去掉这个项相乘的常数
最终结果就是大O阶项
八、最坏情况与平均情况
九、算法的空间复杂度
1.算术的空间复杂度通过计算算法所需要的存储空间实现,算法空间复杂度的计算公式是:S(n) = O(f(n)),n:问题的规模,f(n)为语句关于n所占据存储空间的函数
模板哥 - 网页模板,网站模板,DIV模板,CSS模板,前端模板,官网,官网模板,企业网站模板下载,模板下载