美文网首页
记录一则关于时间复杂度

记录一则关于时间复杂度

作者: 秋名山吴师傅 | 来源:发表于2020-05-20 15:30 被阅读0次

渐进时间复杂度O(n)

在说渐进时间复杂度O(n)前要说一下基本操作执行次数函数T(n)

基本操作执行次数函数T(n)

T(n) = n

echo 1;
echo 2;

以上php代码为三行,假设每行执行时间为1秒,代码无论什么时候执行都为2,执行次数只与行数有关,假设行数为n,这个时候执行的次数就是n所以就可以说 T(n) = n


T(n) = 2n

for($i=0; $i<n; $i++) {
    echo 1;
    echo 2;
}

以上代码真实执行行数为2,是固定的,但是外层套了个循环,这个时候总执行行数 = 固定代码行数 * 循环次数 所以就是 T(n) = 2n,T(n) 就是 固定行数 的 倍数 下面再举一个栗子

T(n) = 4n

for($i=0; $i<n; $i++) {
    echo 1;
    echo 2;
    echo 3;
    echo 4;
}

T(n) = 2logn

for($i=1;$i<n;$i=$i*2) {
    echo 1;
    echo 2;
}

以上这个稍微有点复杂我们采用代入数据来理解

假设n = 4,代码就变成

for($i=1;$i<4;$i=$i*2) {
    echo 1;
    echo 2;
}

第一次循环:

$i=1;

echo 1;

echo 2;

i =i * 2 = 2;

$i = 2 小于 10 循环继续

第二次循环:

$i=2;

echo 1;

echo 2;

i =i * 2 = 4;

$i = 4 不小于 4 循环结束

我们发现以上代码每次执行次数固定为2,总执行次数等于2*logn

如何使用操作复杂度推算时间复杂度?

我们使用以下原则即可

  1. 如果运行时间是常数量级,用常数1表示
  2. 只保留时间函数中的最高阶项;
  3. 如果最高阶项存在,则省去最高阶项前面的系数。

T(n) = n

T(n) = n 可以记做 T(n) = O(1) ,因为表示随着时间增长,他的复杂度是恒定的

T(n) = 2n

T(n) = 2n,根据原则3 ,省去最高阶的系数,所以得到 O(n),表示复杂度随着时间增长而增长,可以说复杂度就是时间

T(n) = 2logn

T(n) = 2logn 根据原则3,省去系数2 得到O(logn)

相关文章

  • 记录一则关于时间复杂度

    渐进时间复杂度O(n) 在说渐进时间复杂度O(n)前要说一下基本操作执行次数函数T(n) 基本操作执行次数函数T(...

  • 两数之和 - Rust

    采用 HashMap 记录减少时间复杂度: 复杂度分析空间复杂度: O(N):主要是记录 hash 值。时间复杂度...

  • 关于时间复杂度

    时间复杂度是我们衡量和筛选算法的一个常用考量维度,如何理解并使用它,是我们日常工作学习中常常会用到的,但是只要一段...

  • 关于时间复杂度

    一、定义 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n)...

  • 算法系列:算法的时间复杂度(Objective-C样例)

    用这篇博客记录一下学习如何计算时间复杂度的过程。本文会从时间复杂度的定义到具体案例的练习,让初学者对时间复杂度有个...

  • Leetcode82-删除排序链表中的重复结点Ⅱ

    Leetcode82,难度:Medium 解答: 方法一:记录重复结点的值 时间复杂度:n;空间复杂度:1 8ms...

  • 关于时间复杂度介绍

    知道算法的速度和它需要多少空间是很有用的。这允许您为工作选择正确的算法。O符号给出了一个算法运行时间和它使用的内存...

  • 关于算法时间复杂度

    1.定义 (1)基本执行次数函数T 一般情况下算法基本操作的执行次数是关于n的某个函数,记做T(n)。 (2)同数...

  • 时间复杂度(下)

    时间复杂度知识点 最好时间复杂度 最坏时间复杂度 平均情况复杂度 均摊时间复杂度

  • 排序-归并

    今天记录下关于:归并排序一些理解和心得。主要分为以下几个方面分享 归并排序的思想 实现方式 时间复杂度 应用 归并...

网友评论

      本文标题:记录一则关于时间复杂度

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