赞
踩
程序 = 数据结构 + 算法
数据:
数据元素:数据的基本单位【元素,记录,结点,顶点】
数据项:构成数据元素的不可分割的最小单位
数据>数据元素>数学项
数据对象:性质相同的数据元素的集合,是数据的一个子集
数据结构:数据元素之间的关系
逻辑结构
存储结构
数据类型和抽象数据类型
算法是我们求解问题的方法和步骤
算法的描述:自然语言,流程图(传统流程图、NS流程图),伪代码(类语言【类C语言】),程序代码
算法与程序的关系:一个问题有多个算法,程序时利用某种程序设计语言对算法的具体实现。
算法的特性:
算法设计的要求
算法分析
上述四个设计要求满足的情况下,考虑算法的效率
算法的时间效率
事后统计(测算)
事前分析(估算)
一个算法的时间复杂度 = 一个简单的操作 × \times × 简单操作次数
算 法 的 运 行 时 间 = ∑ 每 条 语 句 执 行 的 次 数 ( 语 句 的 频 度 ) × 该 语 句 执 行 依 次 所 需 的 时 间 ( 可 以 简 化 其 为 单 位 时 间 ) 算法的运行时间 = \sum每条语句执行的次数(语句的频度)\times该语句执行依次所需的时间(可以简化其为单位时间) 算法的运行时间=∑每条语句执行的次数(语句的频度)×该语句执行依次所需的时间(可以简化其为单位时间)
算 法 的 运 行 时 间 = ∑ 每 条 语 句 执 行 的 次 数 ( 语 句 的 频 度 ) 算法的运行时间 = \sum每条语句执行的次数(语句的频度) 算法的运行时间=∑每条语句执行的次数(语句的频度)
为了便于比较不同算法的时间效率,我们仅比较他们的数量级
O ( f ( n ) ) O(f(n)) O(f(n)) 为算法的渐进时间复杂度,简称为时间复杂度
找算法当中执行次数最多的语句
计算时间复杂度的方法
找出语句频度最大的语句作为基本语句
计算基本语句的频度得到问题规模n的某个函数 f ( n ) f(n) f(n)
取其数量级用符号 O O O表示
一些例子:有点难的
例2的答案是
O
(
N
3
)
O(N^3)
O(N3)
最坏时间复杂度
平均时间复杂度
最好时间复杂度
对于复杂的算法可以分为几个容易估算的部分
算法的空间效率
两者在一般情况下是矛盾的
算法的空间效率
两者在一般情况下是矛盾的
线性表时具有相同特性的数据元素的一个有限序列
线性表顺序存储结构占用一片连续的存储空间
计算在数组中元素存放的位置
顺序表元素的特点:地址连续,依次存放,随机存取,类型相同 =》用一维数组来进行表示
线性表长可变(删除)
===》 用一变量来表示顺序表的长度属性
数组长度不可动态定义
C语言的动态内存分配
C++的动态存储分配
delete p1
形参变化不影响实参
数组名作参数
引用类型作参数
顺序表的查找
平均查找长度ASL(Average Search Length)
为确定记录在表中的位置,需要与给定值进行比较的关键字的个数的期望值叫做平均查找长度。
线性表的插入元素
线性表的删除元素
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。