C 我应该考虑MeMyVe()o(n)还是o(1)? 这可能是个愚蠢的问题,但我想计算一下我的算法的复杂度,我不知道这个函数需要考虑什么复杂性。p>

C 我应该考虑MeMyVe()o(n)还是o(1)? 这可能是个愚蠢的问题,但我想计算一下我的算法的复杂度,我不知道这个函数需要考虑什么复杂性。p>,c,complexity-theory,standard-library,C,Complexity Theory,Standard Library,你能帮忙/解释一下吗 void * memmove ( void * destination, const void * source, size_t num ); 复杂性O(num)或O(1)也是如此。我想是O(num),但我不确定,因为我现在还不了解引擎盖下发生了什么 由于memmove的运行时间与需要移动的字节数成正比增加,因此它是O(n)。对算法中的选定元素或所有元素应用memmove()操作是什么?您是否多次将memmove()应用于元素 这些都是影响算法复杂性的因素 这个答案可能不

你能帮忙/解释一下吗

void * memmove ( void * destination, const void * source, size_t num );

复杂性O(num)或O(1)也是如此。我想是O(num),但我不确定,因为我现在还不了解引擎盖下发生了什么

由于
memmove
的运行时间与需要移动的字节数成正比增加,因此它是O(n)。

对算法中的选定元素或所有元素应用
memmove()
操作是什么?您是否多次将
memmove()
应用于元素

这些都是影响算法复杂性的因素


这个答案可能不同,因为
memmove()
本身对于
memmove()
处理的
char
元素数组的复杂性(对于
memmove()
是一个O(n)操作)。

正确的答案可能是它依赖于实现。您可以想象一个不寻常的系统,其中内存实际上是一些复杂的图形或链表。在每一个实际系统中,我都知道它与num成正比。O(n)是正确的渐近复杂性,但我不认为在这种情况下我会使用术语“直接成正比”,即使对于像
memmove
这样简单的东西。在32位架构上考虑n=4 vs n=1字节:n=1的情况可能实际上是更昂贵的操作!它是
O(n)
其中
n
是传递给
memmove()
的计数,但这可能与用于描述算法特征的
n
不成正比。