数据结构——绪论:1.2算法定义及性能分析

1.2.1算法的定义

---------------------------------------------------------------------------------------------------------------------

概念:

算法是对特定问题求解步骤的一种描述。是指令的有限序列。其中一个指令表示计算机的一个或多个操作

如求 两个正整数m n 的最大公约数

算法描述:

    (1)r =m mod n

    (2)若r =0  输出最大公约数n ,算法结束

    (3)若r不等于 0  令m=n n=r, 转(1)继续

算法的5个特性

(1)有穷性

有穷步后停下,每步在有穷时间内完成

(2)确定性

每个步骤的执行在算法中有确切规定,使读者用明白,且操作不具有二义性

(3)可行性

算法中的所有步骤必须足够基本,算法能在有限次基本操作后完成,可被机械的执行

(4)有输入

(5)有输出

算法与程序的区别

 程序是指使用某种计算机语言对一个算法的具体实现

而算法是解决某个问题的有限步骤的一种描述

打个比方:

对于上面的求最大公约数的算法来说 我们的三个步骤是一个算法设计

而我们使用c语言去编写那三个步骤得到的便是程序

对于一个算法来说 可能有多种程序的编写形式,算法必须满足又穷性,而程序不一定曼珠有穷性

--------------------------------------------------------------------------------------------------------------

1.2.2 算法设计的目标

(1)正确性

(2)可使用性

便于使用 也叫用户友好型

(3)可读性

易于理解

(4)健壮性

       具有容错性不易出现异常中断和死机现象

(5)高效率与低存储量需求

---------------------------------------------------------------------------------------------------------------------

1.2.3 算法分析

一、算法的时间性能分析

   

两种衡量算法时性能的方法

1、事后统计法

即编写算法对应程序,统计其执行时间

缺点 :  (1) 必须执行程序

     (2)存在很多其他因素掩盖算法的本质

2、事前估量法

撇开上述因素,认为算法的执行时间是问题规模n 的函数

算法的时间复杂度分析

我们描述一个算法的时间性能,通常用算法的时间复杂度进行描述

一个算法由控制结构(顺序,分支,循环)和原操作组成

我们将算法所有原操作的执行次数即算法的频度 T(n)用于衡量一个算法的时间性能

n:为问题的规模   如对10个数排序 问题规模即为10

O(T(n))

对于求出一个算法的T(n)后,通常进一步求T(n)的数量级

记  T(n)=O(f(n))  为算法的时间复杂度   

即若  T(n)=2n^3+5n+4  = O(n^3)  该算法的时间复杂度为O(n^3)

求大O阶的技巧就是直接取最大阶数的项,将系数变为1

一个问题目前可以用多项式时间复杂度算法来解决 称此类问题为P问题

一个问题目前只能用指数时间复杂度算法解决 称为NP问题

 NP=P是否成立(即NP问题能不能转换为P问题),是计算机界难题之一

某算法的时间复杂度为O(n^2) 表面该算法的执行时间与n^2成正比

简化的时间复杂度算法

简化的方式求得的时间复杂度与没有简化的是一样的,但更好计算 因此以后采用简化的方法计算

例题

解释;

1、s=1+2+3+……m=m(m+1)/2

2、求解 m(m+1)/2+k=n

 用公式法求解二元一次方程

时间复杂度的求和求积定理

(1)求和定理:

假设T1(n)和T2(n)是程序段P1和P2的执行时间,那么顺序 执行P1、P2的总执行时间T1(n)+T2(n)=O(MAX(f1(n),f2(n)))。 例如:多个并列的循环。

(2)求积定理:

假设T1(n)和T2(n)是程序段P1和P2的执行时间,那么 T1(n)×T2(n)=O(f1(n)×f2(n))。 例如:多层嵌套循环。

算法的最好最坏,平均复杂度

定义:设一个算法的输入规模为n,Dn是所有输入的集合, 任一输入I∈Dn,P(I)是I出现的概率,有 ,T(I)是 算法在输入I下的执行时间,则算法的平均时间复杂度为:

最好时间复杂度 就是在最好情况下的时间复杂度  如查找算法中 一个就是要找的元素

最坏时间复杂度 就是在最坏情况下的时间复杂度  查找算法中最后一个才是要的元素

二、 空间复杂度

空间复杂度:用于量度一个算法运行过程中临时占用 的存储空间大小。算法空间复杂度分析 一般也作为问题规模n的函数,采用数量级形式描 述,记作:S(n) = O(g(n))

若一个算法的空间复杂度为O(1),则称此算法为 原地工作或就地工作算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值