Java中如何分析均摊复杂度及避免复杂度波动现象?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1040个文字,预计阅读时间需要5分钟。
原文:本文字例讲述了Java均摊复杂度和防止复杂度震荡的技巧。分享给大众参考,具体如下:关于上一节封装数组的简单复杂度分析中,我们对我们添加操作的时间复杂度归纳为O(n)是考虑了。
改写后:在Java中,均摊复杂度和防止复杂度震荡的技巧被详细阐述。以下为分享内容:在分析数组封装的简单复杂度时,我们将添加操作的时间复杂度总结为O(n),这是基于以下考虑。
本文实例讲述了Java均摊复杂度和防止复杂度的震荡。分享给大家供大家参考,具体如下:
关于上一节封装数组的简单复杂度分析方法中我们对添加操作的时间复杂度归结为O(n)是考虑了扩容操作(resize)在内的。就addLast(e)操作而言,时间复杂度为O(1),在考虑最坏情况下,每次添加均会触发扩容操作,需要移动n个元素,因此此时addLast操作的时间复杂度为O(n)。
(1)addLast(e)均摊时间复杂度分析
resize(n) O(n)
假设当前capacity=8,并且每一次添加操作都使用addLast方法
17次基本操作包括:9次添加操作,8次转移操作。均摊每次addLast操作进行大约两次基本操作:
平均值为:17/9≈ 2。
本文共计1040个文字,预计阅读时间需要5分钟。
原文:本文字例讲述了Java均摊复杂度和防止复杂度震荡的技巧。分享给大众参考,具体如下:关于上一节封装数组的简单复杂度分析中,我们对我们添加操作的时间复杂度归纳为O(n)是考虑了。
改写后:在Java中,均摊复杂度和防止复杂度震荡的技巧被详细阐述。以下为分享内容:在分析数组封装的简单复杂度时,我们将添加操作的时间复杂度总结为O(n),这是基于以下考虑。
本文实例讲述了Java均摊复杂度和防止复杂度的震荡。分享给大家供大家参考,具体如下:
关于上一节封装数组的简单复杂度分析方法中我们对添加操作的时间复杂度归结为O(n)是考虑了扩容操作(resize)在内的。就addLast(e)操作而言,时间复杂度为O(1),在考虑最坏情况下,每次添加均会触发扩容操作,需要移动n个元素,因此此时addLast操作的时间复杂度为O(n)。
(1)addLast(e)均摊时间复杂度分析
resize(n) O(n)
假设当前capacity=8,并且每一次添加操作都使用addLast方法
17次基本操作包括:9次添加操作,8次转移操作。均摊每次addLast操作进行大约两次基本操作:
平均值为:17/9≈ 2。

