最好,最坏,平均,均摊时间复杂度

// n 表示数组 array 的长度
int find(int[] array, int n, int x) {
  int i = 0;
  int pos = -1;
  for (; i < n; ++i) {
    if (array[i] == x) pos = i;
  }
  return pos;
}

时间复杂度是O(n)

// n 表示数组 array 的长度
int find(int[] array, int n, int x) {
  int i = 0;
  int pos = -1;
  for (; i < n; ++i) {
    if (array[i] == x) {
       pos = i;
       break;
    }
  }
  return pos;
}

最好是O(1),最坏是O(n)

平均时间复杂度如图:

原文地址:https://www.cnblogs.com/hanguocai/p/9900204.html

时间: 2024-10-29 17:01:33

最好,最坏,平均,均摊时间复杂度的相关文章

Chapter4 复杂度分析(下):浅析最好,最坏,平均,均摊时间复杂度

四个复杂度分析: 1:最好情况时间复杂度(best case time complexity) 2:最坏情况时间复杂度(worst case time complexity) 3:平均情况时间复杂度(average case time complexity) 4:均摊时间复杂度(amortized time complexity) for (; i < n; ++i) { if (array[i] == x) { pos = i; break; } } 分析:1:最好情况时间复杂度:O(1) 2

复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度

时间复杂度分析有哪些? 最好情况时间复杂度(best case time complexity) 最坏情况时间复杂度(worst case time complexity) 平均情况时间复杂度(average case time complexity) 均摊时间复杂度(amortized time complexity) 最好.最坏情况时间复杂度 最好情况时间复杂度就是在最理想的情况下,执行这段代码的时间复杂度. 最好情况时间复杂度就是在最糟糕的情况下,执行这段代码的时间复杂度. 来看看下面这段

[数据结构与算法 03] 最好、最坏、平均、均摊 时间复杂度

由来 /**** 在一个无序的数组(array)中 查找变量 x 第一次出现的位置.如果没有找到,就返回 -1 ****/ // n 表示数组array的长度 int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } return pos; } 分析出此函数的时间复杂度为 O(n) 在数组中查找一个数据,并不需要每次都把整个数组

最好、最坏、平均、均摊时间复杂度

关注公众号 MageByte,设置星标点「在看」是我们创造好文的动力.后台回复 "加群" 进入技术交流群获更多技术成长. 本文来自 MageByte-青叶编写 上次我们说过 时间复杂度与空间复度,列举了一些分析技巧以及一些常见的复杂度分析比如 O(1).O(logn).O(n).O(nlogn),今天会继续细化时间复杂度. 1. 最好情况时间复杂度(best case time complexity) 2.最坏情况时间复杂度(worst case time complexity) 3.

【loj6029】「雅礼集训 2017 Day1」市场 线段树+均摊分析

题目描述 给出一个长度为 $n$ 的序列,支持 $m$ 次操作,操作有四种:区间加.区间下取整除.区间求最小值.区间求和. $n\le 100000$ ,每次加的数在 $[-10^4,10^4]$ 之间,每次除的数在 $[2,10^9]$ 之间. 题解 线段树+均摊分析 和 [uoj#228]基础数据结构练习题 类似的均摊分析题. 对于原来的两个数 $a$ 和 $b$ ( $a>b$ ) ,原来的差是 $a-b$ ,都除以 $d$ 后的差是 $\frac{a-b}d$ ,相当于差也除了 $d$

【BZOJ3211】花神游历各国 树状数组 并查集 均摊分析

链接: #include <stdio.h> int main() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/44686727"); } 题解: 一个点开几次方就没啦.所以我们只需要修改不是0或者1的点就行了. 均摊基本O(n). 然后用并查集维护一个点右边第一个不是0的数. 手写读入果然高大上.卡rank神器. 顺便Orz一下wys大神. 代

cf250D. The Child and Sequence(线段树 均摊复杂度)

题意 题目链接 单点修改,区间mod,区间和 Sol 如果x > mod ,那么 x % mod < x / 2 证明: 即得易见平凡, 仿照上例显然, 留作习题答案略, 读者自证不难. 反之亦然同理, 推论自然成立, 略去过程Q.E.D., 由上可知证毕. 然后维护个最大值就做完了.. 复杂度不知道是一个log还是两个log,大概是两个吧(线段树一个+最多改log次.) #include<bits/stdc++.h> #define Pair pair<int, int&g

算法之时间复杂度和空间复杂度

时间复杂度: 定义:在进行算法分析时,语句的总执行次数T(n)是关于问题的规模n的函数,进而分析T(n)随着n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间时间量度,记做:T(n)=O(f(n)).它表示随着问题的规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称时间复杂度.其中f(n)是问题规模n的某个函数. 这样用大写 O()来体现算法时间复杂度的记法,我们称之为大 0 记法 .一般情况下,随着 n 的增大, T(n)增长最慢的算法

[转帖]到底什么是时间复杂度

大学的时候 专业课 讲这个东西了 但是 自己一直没有仔细去学习.. 到现在也不是很清晰..感觉自己对数学里面的对数 指数 还有离散数学 学习的不好 影响自己对程序世界的理解. 需要找时间 仔细学习 再翻翻. https://www.cnblogs.com/fanyi0922/p/10779471.html 我们常常在武侠小说中看到一位内力精深的高手在学习新的招式的时候修炼速度异常惊人,我心目中最经典的片段就是倚天屠龙记中张无忌学习乾坤大挪移和太极拳的时候了,他能在极短的时间内领会常人数十年所不能