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:最坏情况时间复杂度:O(n),因此在不同的情况下,这段代码的时间复杂度是不一样的,所以引入三个概念:最好,最坏,平均情况复杂度。

3:平均情况复杂度:

I:要查找的变数X在数组中的位置有n+1种情况:在数组的0~n-1位置中和不在数组中,我们把每种情况下,查找需要遍历的次数累加起来,然后除以n+1,就可以得到需要遍历的元素个数的平均值,即:

(1+2+3+……+n+n)/(n+1)=n(n+3)/2(n+1)

得到平均时间复杂度就是O(n)

  II:概率分析法

4:均摊时间复杂度(摊换分析,平摊分析)

原文地址:https://www.cnblogs.com/zhaohu/p/9974989.html

时间: 2024-11-02 16:33:31

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

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

时间复杂度分析有哪些? 最好情况时间复杂度(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.

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

// 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; 

复杂度分析(下)

复杂度分析(下) 继续上篇,这篇将介绍四个复杂度分析方面的知识点:最好情况时间复杂度.最坏情况时间复杂度.平均情况时间复杂度.均摊时间复杂度. 1.最好.最坏情况时间复杂度 我们以数组查找举例,遍历数组找指定元素,找到则立即返回该元素所在数组的下标位置,没找到则返回-1.代码比较简单我就不写出来了. 我们来分析一下, 最好情况时间复杂度:最好情况当然是数组的第一个元素就是查找的元素,为O(1) 最坏情况时间复杂度:最坏情况就是数组的最后一个元素为查找的元素,需要遍历完整个数组才能找到该元素,或者

学好数据结构和算法 —— 复杂度分析

复杂度也称为渐进复杂度,包括渐进时间复杂度和渐进空间复杂度,描述算法随数据规模变化而逐渐变化的趋势.复杂度分析是评估算法好坏的基础理论方法,所以掌握好复杂度分析方法是很有必要的. 时间复杂度 首先,学习数据结构是为了解决“快”和“省”的问题,那么如何去评估算法的速度快和省空间呢?这就需要掌握时间和空间复杂度分析.同一段代码运行在不同环境.不同配置机器.处理不同量级数据…效率肯定不会相同.时间复杂度和空间复杂度是不运行代码,从理论上粗略估计算法执行效率的方法.时间复杂度一般用O来表示,如下例子:计

[算法]复杂度分析

时间复杂度 时间复杂度的分析 只关注循环执行次数最多的一段代码,因为使用大O表示法,其他执行次数较少的复杂度可以忽略 加法法则:总复杂度等于量级最大的那段代码的复杂度 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积 常见的时间复杂度示例 复杂度从低阶到高阶为:(复杂度越高阶,执行效率越低) O(1).O(logn).O(n).O(nlogn).O(n^2) O(1) 该时间复杂度表示代码的执行时间可以认为与输入n无关,是一个固定的值 O(logn)&O(nlogn) o(logn)复杂度

DSA_02:复杂度分析

真正掌握了复杂度分析,可以说 DSA 便掌握了一小半. 复杂度分析分为:时间复杂度分析.空间复杂度分析. 时间复杂度的定义: 并不是指代码执行的具体.确定时间. 它表示的是一个算法执行效率与数据规模增长的变化趋势. 即便代码需要执行成千上万次,只要它不随数据规模变化而变化,那么它的复杂度就是 O(1). 空间复杂度的定义: 类似的,它表示空间占用与数据规模增长的变化趋势 同样,哪怕占用再多的空间,只要它不随数据规模变化而变化,那么它的复杂度就是 O(1). 复杂度的两种表示方法: 1. T(n)

数据结构算法——算法复杂度分析

算法复杂度分为时间复杂度和空间复杂度 首先要清楚一点,大O表示法的时间复杂度高不代表程序运行时间长,空间复杂度高不代表占用空间多. 他们表示的是代码执行时间随着数据规模增长的变化趋势.和算法储存空间与数据规模之间的增长关系. 时间复杂度判断方法 1.只关注循环次数最多的一段代码 2.加法法则:总复杂度等于量级最大的那段代码的复杂度 3.乘法原则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积 常见的复杂度量级(按数量级递增) 常量阶:O(1) 对数阶:O(logn) 线性阶:O(n) 线性对数阶: