其他分享
首页 > 其他分享> > 复杂度分析笔记下

复杂度分析笔记下

作者:互联网

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

最好情况复杂度分析:

在最理想的情况下执行这段代码的时间复杂度

最坏情况复杂度分析:

在最糟糕的情况下执行这段代码的时间复杂度

加权平均情况复杂度(也叫期望时间复杂度)

在所有情况(需要乘以这种情况发生的概率)的复杂度之和在除以情况的个数

均摊时间复杂度

通过摊还分析得到的时候见复杂度
在整个过程中大多情况出现低阶复杂度和偶现高阶复杂度的情况下,将高阶均摊到周期内的低阶上,然后求连续复杂度。(有规律出现)

// 全局变量,大小为 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)
最坏:
空间不够需要重新分配:时间复杂度为:O(n)
平均:
在分析时间复杂度是O(1)还是O(n)的时候如果出现O(1)的次数远大于出现O(n)出现的次数,那么平均平摊时间复杂度就是O(1)。不过我们一般情况下平均 均摊说一个就好了
均摊只是其中一种复杂度度量方法,并不是说我们只关注均摊,不关注最坏。我们评价一段代码或者算法的时候,还是会综合这几种复杂度的。用什么表示复杂度不重要,初衷还是能更好的体现出这个算法或者代码的性能。

标签:分析,int,复杂度,笔记,len,new,array,均摊
来源: https://blog.csdn.net/weixin_38798865/article/details/99857969