アルゴリズムの質問に関する一般的な本を読んでいて、次のような文字列結合の実装を見ました。
public String joinTheStrings(String[] theStrings){
String joinedString = "";
for(String singleString : theStrings){
joinedString = joinedString + singleString;
}
return joinedString;
}
著者はその後、この実装はO(n^2)
であると主張し、最適化は のStringBuffer
代わりにを使用するjoinedString
ことであり、アルゴリズムを作成すると主張しましたO(n)
。ただし、元のアルゴリズムがどのようになっているのかわかりO(n^2)
ません-N個の単語に対してN個の操作があるように見えます(文字列を一緒に追加します)。
更新: 返信ありがとうございます。作者が文字の配列のコピー(定数であると思います)を、償却されたランタイムのNの別の要素としてどのように扱うかについて、私は混乱しているように見えますか?