这属于stackoverflow.com/help/on-topic的“软件算法”,在这种情况下,是一个将项添加到动态未排序数组的软件算法
这是我们在课堂上关于不同数据结构上的操作运行时间的图表
我的问题是关于将值插入(或添加)到动态未排序数组中的运行时.
这是我们执行此操作的代码
public void insert(E value) { ensureCapacity(size + 1); elementData[size] = value; size++; } private void ensureCapacity(int capacity) { if (capacity > elementData.length) { int newCapacity = elementData.length + 100; if (capacity > newCapacity) { newCapacity = capacity; } elementData = Arrays.copyOf(elementData,newCapacity); } }
我理解这可以解释为O(n). ensureCapacity函数在技术上是由insert和运行时分析组成的操作的区别,https://academics.tjhsst.edu/compsci/CS2C/U2/bigoh.html,你会说两个分支的最坏情况是当原始数组的每个元素被复制到新的数组中时(n)操作.所以整个函数的最坏情况或大哦是O(n)
可以为摊销的O(1)时间(What is amortized analysis of algorithms?)进行争论,因为每次调整大小时,你必须在下一次调整大小之前等待一段特定的时间吗?
在那张图表中,O(1)也会有意义吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。