2016-03-29 9 views
1

私はCodi​​ng InterviewのCrackingの例を実行していましたが、System.out.println(prefix);(接頭辞はString)は、各文字を印刷する必要があるため、「O(n)時間かかる」と読んでいます。 O(1)アルゴリズム(例えばハッシュテーブルルックアップなど)の中に同様のprint文が置かれていれば、それはアルゴリズム全体をO(n)にするでしょうか?文字列の印刷は実際にはO(n)かかりますか?

+6

「n」とは何ですか?あなたはこれを解決するために 'n 'が何であるかを詳しく追跡する必要があります。 – user2357112

+0

@ user2357112 https://en.wikipedia.org/wiki/Big_O_notation#Use_in_computer_science –

+2

@НЛО私はuser2357112は、この場合は 'n' **と言っています。私は詳しく説明します。 :) – duskwuff

答えて

4

アルゴリズムのbig-Oの複雑さを記述するときは、式の変数が表すものを定義することが重要です。しばしばいくつかのことがあります!たとえば、バイナリツリー内の整数を検索すると、そのノードに関連付けられた文字列を印刷すると、O(m + log n)となります。nはツリー内のオブジェクトの数、mは文字列の長さです。

複数の異なる要素(ハッシュテーブルの要素数とそのサイズなど)を表すために1つの変数を使用すると、常にエラーが発生します。その結果、明らかに不合理な結果が生じます(例:ハッシュテーブルルックアップはO(n)です)。

+0

"たとえば、バイナリツリーで文字列を検索すると、文字列の比較には" O(m + log n) '" - または 'O(m * log(n))'あなたのBSTが特に特殊化されていない限り、後のスピードを上げるために以前の比較を利用するための特別なメタデータや特殊な検索コードはないでしょう。 – user2357112

+0

@ user2357112おそらく、それは最良の例ではありませんでした!あいまいさを取り除くために調整しました。 – duskwuff

関連する問題