关闭

算法复杂度分析

195人阅读 评论(0) 收藏 举报
分类:

算法分析的四个渐进表示法:

O、o、Θ、Ω

一般,O里的,取最小的
一般,Ω里的,取最大的

一般分析时间复杂度,且常考虑最坏复杂度,常用O分析:

三法则:

法则一:

如果T1(N)=O(f(N)),T2(N0=O(g(N))

T1(N)+T2(N)=max(O(f(N)),O(g(N)))

T1(N)*T2(N)=O(f(N))*O(g(N))

法则二:

如果T(N)为k次多项式,T(N)=Θ(N^k)  

法则三:

对任意常数k,(logN)^k=O(N)

注意:

忽略调用函数和返回值的开销

声明不计时间

O内无常数,系数,低阶项

一般法则:

法则一:for循环

法则二:嵌套的for循环

法则三:顺序语句

法则四:if-else语句

从不超过判断再加上if和else语句中运行较长的部分的和



1
0
查看评论

算法分析之N皇后问题

因为这学期的算法分析课快要完了,也差不多进入复习阶段了,所以在这就把学习到的一些比较经典的算法拿出来晒晒,可能不是最好的,但怎么说也是为解决问题提供了一个思路。关于算法,有很多类型的问题,我在这里就拣一个复习一个了,呵呵。     今天要写的算法是源于八皇后问题,但在这...
  • nicolas_huan
  • nicolas_huan
  • 2017-03-28 10:36
  • 249

算法的时间复杂度和空间复杂度-总结

算法的时间复杂度和空间复杂度 1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪...
  • zolalad
  • zolalad
  • 2013-09-20 16:01
  • 97778

算法复杂度分析

一 、时间复杂度            算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是度量算法执行的时间长短;而空间复杂度是度量算法所需存储空间的大小。任何算法运行所需要的时间几乎总是取决于他所处理的数据量,在这...
  • Beyond_cn
  • Beyond_cn
  • 2013-09-04 16:23
  • 4925

数据结构与算法一:算法复杂度分析

T(f(N)) = O(g(N)) 表示f(N)的增长率是小于g(N)的。 数学表达是f(N) n0(c、n0是个常数) T(f(N)) = θ(g(N)) 表示f(N)的增长率是等于g(N)的。 数学表达是f(N) = cg(N) N>n0(c、n0是个常数) T(f(N)) = ...
  • beautyleaf
  • beautyleaf
  • 2016-03-12 19:33
  • 284

面试用算法复杂度总结

面试时被问到了很多算法复杂度的东西,现在做个总结。主要从树结构和排序的角度分析这些常用算法的时间和空间复杂度。 一、复杂度简介 1、空间复杂度 空间复杂度有很多影响因素,如指令空间、数据空间(动态数组、动态类实例、常量和简单变量的存储空间)、环境栈空间(常在递归时使用)。一般说的空间复杂度是指所需...
  • woaidapaopao
  • woaidapaopao
  • 2017-05-16 17:15
  • 470

玩转算法面试-时间复杂度分析

时间复杂度:算法中某个特定步骤的执行次数/对于总执行时间的估算成本,随着「数据规模」的增大时,增长的形式。 因为常数的存在。举例来说:a,b,c,d是常数(依据于具体算法),可见,随着数据的增加,是和n的变化幅度有关系的。 O()描述的是一个量级上的差距,当n达到一个数值时,时间复杂度低的算法一定...
  • qq_33936481
  • qq_33936481
  • 2017-07-01 15:13
  • 487

算法复杂度解析

摘要       本文论述了在算法分析领域一个重要问题——时间复杂度分析的基础内容。本文将首先明确时间复杂度的意义,而后以形式化方式论述其在数学上的定义及相关推导。从而帮助大家从本质上认清这个概念。 前言    ...
  • u011225629
  • u011225629
  • 2015-08-11 16:26
  • 1883

最短路-四种算法复杂度分析比较 HDU-1874 畅通工程

样例解析: 每组数据第一行包含两个正整数N和M(0#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int inf = 1<<...
  • jichangzhen
  • jichangzhen
  • 2016-08-21 11:24
  • 981

表达式求值的经典算法

<br /><br />编写代码对算术表达式求值的经典方法由 Donald Knuth 描述于 1962 年(请参阅 参考资料)。Knuth 将此概括为三个步骤:对中缀表达式进行语法分析中缀表达式到后缀表达式的转换对后缀表达式求值<br />注意到我们谈...
  • xiaohailing
  • xiaohailing
  • 2011-03-23 09:04
  • 929

如何对一个算法进行复杂度分析

算法复杂度是在《数据结构》这门课程的第一章里出现的,因为它稍微涉及到一些数学问题,所以很多同学感觉很难,加上这个概念也不是那么具体,更让许多同学复习起来无从下手,下面我们就这个问题给各位考生进行分析。 首先了解一下几个概念。一个是时间复杂度,一个是渐近时间复杂度。前者是某个算法的时间耗费,它是...
  • shuitawuhen
  • shuitawuhen
  • 2014-12-07 19:11
  • 3666
    个人资料
    • 访问:206485次
    • 积分:7282
    • 等级:
    • 排名:第3647名
    • 原创:501篇
    • 转载:17篇
    • 译文:0篇
    • 评论:29条
    最新评论