美文网首页
day02 四种时间复杂度分析方法

day02 四种时间复杂度分析方法

作者: 爱学习的代代 | 来源:发表于2019-12-15 23:01 被阅读0次
一、时间复杂度有哪几种?
  • 最好时间复杂度
  • 最坏时间复杂度
  • 平均时间复杂度(概率)
  • 均摊时间复杂度(特殊的平均时间复杂度;将较高复杂度那次操作耗时,平摊到其他那些时间复杂度比较低的操作上)
二、练习题:时间复杂度分析 add 函数
// 全局变量,大小为10的数组array,长度len,下标i。
int array[] = new int[10]; 
int len = 10;
int i = 0;

// 往数组中添加一个元素
void add(int element) {
   if (i >= len) { // 数组空间不够了
     // 重新申请一个2倍大小的数组空间
     int new_array[] = new int[len*2];
     // 把原来array数组中的数据依次copy到new_array
     for (int j = 0; j < len; ++j) {
       new_array[j] = array[j];
     }
     // new_array复制给array,array现在大小就是2倍len了
     array = new_array;
     len = 2 * len;
   }
   // 将element放到下标为i的位置,下标i加一
   array[i] = element;
   ++i;
}

解答:

最好时间复杂度为:O(1)

当数组的内元素小于10的时候,可以直接插入,此时时间复杂度为O(1)

最坏时间复杂度为:O(n)

当插入的数据位置为n+ 1, 切n > 10 的时候,需要重新申请数组空间,原数组内copy到新的数组内。当n比较大时,需要拷贝 n 次。此时的时间复杂度为O(n)

均摊时间复杂度: O()

每一次O(n)的添加操作,都伴随着n-1次的O(1)操作。此时将耗时的O(n)操作均摊到n-1次操作上,此时的时间复杂度为:O(1) + O(1) +..... + O(1) = O(1)

相关文章

  • day02 四种时间复杂度分析方法

    一、时间复杂度有哪几种? 最好时间复杂度 最坏时间复杂度 平均时间复杂度(概率) 均摊时间复杂度(特殊的平均时间复...

  • 复杂度分析二

    四种稍微复杂情况下的时间复杂度 之前已经分析了常见的时间复杂度的分析情况,如O(1)、O(longn)....,除...

  • 第四节-复杂度分析下

    上节课讲了简单的时间、空间复杂度分析方法,这节课主要讲了复杂情况下的时间复杂度的其他表示方法: 最好情况时间复杂度...

  • 数据结构与算法之美笔记——复杂度分析(下)

    摘要: 时间复杂度还可分为四种,分别是「最好时间复杂度」、「最坏时间复杂度」、「平均时间复杂度」和「均摊时间复杂度...

  • 算法学习笔记-浅析时间复杂度

    四种情况的维度: 最好情况时间复杂度 最坏情况时间复杂度 平均情况时间复杂度 均摊时间复杂度 最好时间复杂度 在最...

  • 算法复杂度分析

    复杂度分析包括: 时间复杂度分析 空间复杂度分析 事后统计法 我们常用事后统计法来统计效率,这种方法也存在一些问题...

  • LeetCode ---- 搜索旋转排序数组

     采用动态规划的方法,不断找到目标值的可能存在区间。 复杂度分析: 时间复杂度:O(log(n))。 空间复杂度:...

  • 复杂度分析

    为什么需要复杂度分析? 大O复杂度表示法 时间复杂度分析 常见复杂度量级 复杂度量级简单说明 空间复杂度 时间复杂...

  • 复杂度学习

    常见的时间复杂度分析方法 1.数循环次数 循环次数是N,3层循环,时间复杂度就是N的3次方 2.均摊分析 3.递归...

  • 针对封装数组的简单复杂度分析

    完成了数组的封装之后我们还需对其进行复杂度分析:此处的复杂度分析主要是指时间复杂度分析,算法的时间复杂度反映了程序...

网友评论

      本文标题:day02 四种时间复杂度分析方法

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