2

アルゴリズムの質問に関する一般的な本を読んでいて、次のような文字列結合の実装を見ました。

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の別の要素としてどのように扱うかについて、私は混乱しているように見えますか?

4

1 に答える 1