打印字符串真的需要O(n)吗?

时间:2016-03-29 22:54:04

标签: algorithm big-o

我在Cracking the Coding Interview中做了一个例子,我读到执行System.out.println(prefix);(其中前缀是一个字符串)将需要" O(n)时间,因为每个字符都需要打印&#34 ;。如果在O(1)算法中放置类似的print语句(例如哈希表查找等),它会使整个算法成为O(n)吗?

1 个答案:

答案 0 :(得分:4)

在描述算法的大O复杂性时,定义表达式中的变量代表什么是至关重要的。可能经常有几个!例如,在二叉树中查找整数,然后打印与该节点关联的字符串可能被表征为O(m + log n),其中n是树中对象的数量,m是字符串的长度。

使用单个变量来表示多个不同因素(例如,哈希表中的元素数量及其大小)总是错误的,这样做会导致明显荒谬的结果(例如,哈希表)查找为O(n))。