java—在while循环中声明数组是否会影响空间复杂性

t5zmwmid  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(309)

在java中-假设有一个while循环运行logn次,那么时间复杂度为o(logn),在该循环中,我在每次迭代中声明一个大小为2的数组:

While (high > low)
Int[] arr = arrFunc(mid, 0);

因此,在每次迭代中,我们都创建一个在前一个数组上运行的数组,因为它被java垃圾收集器“销毁”。那么空间复杂度o(1)呢?还是o(logn)?

polkgigr

polkgigr1#

空间复杂性的概念是语言不可知的。
在这里,由于您在每个迭代中创建一个新的结构,所以您增加了同样多的空间复杂性。
如果你的算法是 O(log n) 在时间复杂度上,这部分的空间复杂度也是 O(log n) 还有,别忘了 O 是算法可能达到的上限。它不是算法将使用的实际空间。
正如@luk2302正确指出的,如果您的算法不是每次都创建一个新数组,而是使重用现有数组成为可能,那么您的空间复杂度将下降到 O(1)

相关问题