美文网首页数据结构和算法分析程序员
【数据结构与算法】时间复杂度和空间复杂度

【数据结构与算法】时间复杂度和空间复杂度

作者: 大基本功 | 来源:发表于2018-08-06 10:58 被阅读10次

同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。

时间复杂度

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),存在一个正常数c使得fn*c>=T(n)恒成立。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

推导大O阶

推导攻略:

  • 用常数1取代运行时间中的所有加法常数
  • 在修改后的运行次数函数中,只保留最高阶项
  • 如果最高阶项存在且不是1,则去除与这个项相乘的常数
常数阶

常数阶用O(1)表示

线性阶

线性阶用O(n)表示
示例:如下代码的时间复杂度即为O(n)

int I ,n = 100, sum = 0;
for(I = 0 ; I < n; I++){
   sum = sum + I;
}
平方阶

平方阶用O(n²)表示
示例:如下代码的时间复杂度即为O(n²)

int I , j , n = 100;
for (I = 0; I < n; I++){
   for(j = 0; j < n; j ++ ){
   printf("666")
   }
}
对数阶

对数阶用O(logn)表示
示例:如下代码的时间复杂度即为O(logn)

int I = 1, n = 100;
while(I < n){
 I = I * 2
}
//由于2^x = n ,所以x = log(2)n
常见时间复杂度
时间复杂度 术语 例子
O(1) 常数阶 123
O(n) 线性阶 2n+3
O(n²) 平方 3n²+4n+5
O(logn) 对数阶 3log(2)n + 5
O(nlogn) nlogn阶 2n + 3nlog(2)n + 10
O(n³) 立方阶 n³+3n²+4n+5
O(2^n) 指数阶 2^n

常见时间复杂度耗费时间从小到大依次是: O(1)<O(logn)<(O(n))<O(nlogn)<O(n²)<O(n³)<O(2^n)

空间复杂度

与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作:

S(n)=O(f(n))

相关文章

  • 数据结构与算法-复杂度分析

    时间、空间复杂度:衡量算法执行小路的指标,数据结构与算法离不开时间、空间复杂度分析,复杂度分析是算法的精髓。 为什...

  • 一位算法工程师的自我修养

    数据结构与算法 基本算法思想动态规划贪心算法回溯算法分治算法枚举算法 算法基础 时间复杂度 空间复杂度 最大复杂度...

  • 数据结构学习大纲

    第一章 绪论 数据结构基本概念数据结构基本概念算法的基本概念算法的时间复杂度与空间复杂度分析基础时间复杂度分析空间...

  • 算法复杂度

    数据结构: 数组、链表、栈、队列、二叉树、hash表、图。 空间复杂度和时间复杂度的算法 空间复杂度和时间复杂度 ...

  • 数据结构(一)时间复杂度

    简介:如果想对数据结构和算法有基本的了解和认识,那么算法复杂度是前提,算法复杂度包含时间复杂度和空间复杂度,具体概...

  • Python-100天(二)-Python语言进阶

    数据结构和算法 算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。 渐近时间复杂度的大O...

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

    复杂度:时间复杂度和空间复杂度。复杂度的分析是学习数据结构与算法的基础! 极简概述 复杂度的分析已经有很多很好...

  • Python语言进阶

    Python语言进阶 数据结构和算法 算法:解决问题的方法和步骤 评价算法的好坏:渐近时间复杂度和渐近空间复杂度。...

  • 排序算法

    数据结构8种排序时间和空间复杂度对比七大查找算法学了这么多年算法,你还不知道时间复杂度和空间复杂度如何计算吗?排序...

  • 数据结构和算法

    01_数据结构和算法绪论.mp4 02_谈谈算法.mp4 03_时间复杂度和空间复杂度.mp4 04_时间复杂度和...

网友评论

    本文标题:【数据结构与算法】时间复杂度和空间复杂度

    本文链接:https://www.haomeiwen.com/subject/woluvftx.html