我只是想知道 printf()
函数的实际运行时间是多少。无论是O(n)还是Ω(n),我根据什么来决定printf函数的运行时间?
就像如果它只是在屏幕上打印一行,它可以是 O(1),因为它只需要特定数量的 CPU 周期来运行它,但是如果在循环中使用 printf 会怎么样?没有预定义 printf() 函数将被调用多少次,然后呢?会是 O(n) 还是什么?
最佳答案
print
所花费的时间始终与要打印的字符数成正比,因此它是 θ(N)(因此是 O(N) 和 Ω(N)),其中 N 是要打印的字符数。
但是 N 不是字符数?
在评估对字符串列表进行操作的算法(例如排序算法)时,研究字符串长度增长时会发生什么通常是无趣的,因为它会对所有算法产生相同的影响。我们更感兴趣的是研究当列表大小增长时会发生什么。为此,我们假设在这些情况下字符串的长度是恒定的。
例如,排序算法可能需要 O((N log N)*M),其中 N 是元素数量,M 是字符串长度。如果我们考虑字符串的长度恒定,则变为 O(N log N),并且 print
从 θ(M) 到 θ(1)。
关于c - printf()函数的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23189578/