为什么这段代码的运行时间为0(n ^ 2)

时间:2014-08-21 19:11:44

标签: java

为什么这段代码的运行时间是O(n ^ 2)。(正如破解编码面试书所写的那样)。以及如何改进它

public String makeSentence(String[] words) {
    StringBuffer sentence = new StringBuffer();
    for (String w : words) sentence.append(w);
    return sentence.toString();
}

2 个答案:

答案 0 :(得分:1)

n = words数组

中的元素数量

for循环至少意味着O(n)

for循环中,sentence.append(w)的每个实例都应该是"常量"因为sentenceStringBuffer

执行常量n次意味着您总共得到O(n)

答案 1 :(得分:0)

要查看的关键行是for (String w : words) sentence.append(w);

在Java中,String附加是O(n)操作。因为append在for循环内,所以整个方法是O(n ^ 2)。