美文网首页
数据结构——计算算法时间复杂度

数据结构——计算算法时间复杂度

作者: 小白要打怪 | 来源:发表于2020-06-07 15:36 被阅读0次

算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n))。它表示随时间规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模b的某个函数。

这样用大写O()来体现算法的时间复杂度的计法,称为大O计法

推导大O阶:

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

常数阶

int sum =0, n = 100;
sum = (1+n)*n/2;
cout<< sum;

这个算法的运行次数是f(n) = 3,根据推导大O阶的方法,第一步就是把常数3改为1保留最高阶时发现没有最高阶,所以算法复杂度是O(1)

线性阶

int sum = 0;
for(int i = 0; i< n ; i++)
{
    sum = sum + i;
}
cout<<sum;

因为循环体中的代码要执行n次,所以时间复杂度是O(n)

对数阶

int count = 1;
while(count < n){
    count = cont * 2;
}

由于每次count*2之后,就距离n更近了一分,也就是说有多少个2相乘后大于n,则会退出循环。由2^x= n 得到x = log2n,所以这个循环的时间复杂度是O(logn)

平方阶

例如循环嵌套,时间复杂度为O(n^2)

int i,j;
for(i = 0;i<n;i++){
    for(j = i; j <n; j ++)
    {
        ...
    }
}

总执行次数为:
n + (n-1) + ... + 1 = \tfrac{n*(n+1)}{2} = \tfrac{n^2}{2} + \tfrac{n}{2}
推导大O阶:只保留最高项 因此保留\tfrac{n^2}{2},去除项相乘的常数,也就是去除1/2,最终时间复杂度为O(n^2)

看以下相对复杂的语句:

n ++ ;              //执行次数为1
f(n);                // 执行次数为n
for(int i = 0;i < n; i++){
    f(n);            // 执行次数为n2
}
for(int i = 0;i < n; i++){
    for(int j = i; j < n ; j ++)
    {
        
    }
}

它的执行次数为:f(n) = 1+n + n^2 + \tfrac{n*(n^2)}{2} = \tfrac{3}{2}n^2 + \tfrac{3}{2}n + 1,根据推导大O阶的方法,最终代码的时间复杂度也是O(n^2)

相关文章

  • Redis 学习笔记4 - 数据结构的使用

    1. 数据结构的使用 1.1 时间复杂度 谈到数据结构,一定会谈到 “时间复杂度”。 在计算机科学中,算法的时间复...

  • 算法 & 数据结构

    概述 程序 = 算法 + 数据结构算法是计算机科学的本质,是计算机世界的基石 算法的复杂度 定性描述算法的运行时间...

  • 排序算法

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

  • 算法复杂度速查表

    方便大家快速计算常见算法的时间和空间的大O复杂度 图例 数据结构操作 数组排序算法 图操作 堆操作 大O复杂度图表

  • 数据结构&算法小谈

    一、数据结构&算法 二、数据结构名词 三、时间复杂度术语: 时间复杂度:算法执行所需要的多少时间,使用O(......

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

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

  • 算法初步

    时间复杂度 时间复杂度是用来估计算法运行时间的式子(单位)。 时间复杂度小结 空间复杂度 用来计算一个算法临时占用...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 数据结构与算法之美2--复杂度分析(上)

    数据结构与算法 1 什么是复杂度分析? 1.数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”。2....

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

网友评论

      本文标题:数据结构——计算算法时间复杂度

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