【数据结构】CH1 绪论3——算法分析

目录

前言

一、算法分析概述

二、算法时间性能分析

1.两种算法时间性能分析

2.算法时间复杂度分析

(1)计算算法的频度​编辑

 (2)频度​编辑用“O”表示

(3)简化的算法时间复杂度分析

 (4)时间复杂度的求和、求积定理

3.算法的最好、最坏和平均时间复杂度

4.递归算法时间复杂度

三、算法空间性能分析

1.算法空间复杂度分析

2.递归算法空间复杂度分析 


前言

        在一个算法设计好之后,还需要对其进行分析,确定一个算法的优劣。本节讨论算法的时间复杂度和空间复杂度分析。

一、算法分析概述

        算法分析就是分析算法占用计算机资源的多少。而计算机资源主要是CPU时间和内存空间,分析算法占用CPU时间的多少称为时间性能分析,分析算法占用空间的多少称为空间性能分析。

        算法分析的目的是分析算法的时空性能以便改进算法。

二、算法时间性能分析

1.两种算法时间性能分析

        通常有两种衡量算法时间性能的方法,即事后统计法和事前估算法。

  • 事后统计法:编写算法对应程序,统计其执行时间。一个算法用计算机语言实现后,在计算机上执行所消耗的时间与很多因素有关,如计算机的运行速度、编写程序采用的计算机语言、编译产生的机器代码质量和问题的规模问题。这种方法存在两个。一是必须执行程序,二是存在很多因素掩盖了算法本质
  • 事前估算法:撇开这些与计算机硬件、软件有关的因素,仅考虑算法本身的效率高低,可以认为一个特定算法的“运行工作量”的大小只依赖于问题的规模(通常用整数n表示),或者说算法的执行时间是问题规模的函数,因此后面主要采用事前估算法来分析算法的时间性能

2.算法时间复杂度分析

(1)计算算法的频度T(n)

        一个算法是由控制结构(顺序、分支和循环3种)和原操作(指固有数据类型的操作)构成的。例如,在以下算法中,语句1、3、5和6就是原操作。

 而算法的执行时间取决于控制结构和原操作的综合效果。显然,在一个算法中执行原操作数的次数越少,其执行时间也就相对较少;执行原操作数次数越多,其执行时间也就相对越多。也就是说,一个算法的执行时间可以由其中原操作数的执行次数来计量

        假设算法的问题规模为n,如果对10个整数排序,问题规模n就是10。算法时间分析的就是求出算法所有原操作数的执行次数(也成为频度),它是问题规模n的函数,用T(n)表示。

        算法执行时间大致等于原操作所需的时间*T(n),也就是说T(n)与算法的执行时间成正比,为此用T(n)表示算法的执行时间,比较不同算法的T(n)大小得出算法执行时间的多少。

 (2)频度T(n)用“O”表示

        由于算法分析不是绝对是件的比较,在求出T(n)后,通常进一步采用时间复杂度来表示。算法时间复杂度(time complexity)就是用T(n)的数量级来表示,记作T(n)=O(f(n))

        在上述表达式中“O”读作“大O”(是Order的简写,意指数量级),其含义是为T(n)寻找一个上界f(n),其严格地数学定义是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值