2017-06-08 8 views
2

ループ効率の中のStringbuilder?

StringBuilder sb = new StringBuilder(); 
for(int i = 0; i < n; i++){ 
    sb.append('a'); 
} 

のようなものを使用することを考慮して、コードO(N^2)またはO(N)の効率ですか?

+2

[この単純なコードの複雑さは何ですか?](https://stackoverflow.com/questions/7156122/what-is-the-complexity-of-this-simple-piece-of-コード) – erip

+0

容量を事前に割り当てることができます。例えば: 'StringBuilder sb = new StringBuilder(n);'これはほとんどの動的サイズの配列やリストに当てはまります。事前割り振りをしないと、毎回のログ(n)サイクル、またはnサイクルごとに発生する可能性のある自動再割り当てに依存しています。あなたを 'O(n * log(n))'や 'O(n^2)'にまで減速させます。 – ebyrob

+3

['StringUtils.repeat( 'a'、n);'](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils。 html#repeat-char-int-)は、私がそれを記述する方法です。 –

答えて

0

これはO(N)であり、それはあなたがどのくらいの大きさの費用を要することを意味するn変数です。

+0

@ebyrob、まったく... –

関連する問題