2016-11-11 18 views
0

コーディングインタビューのクラッキングを読んできましたが、私は著者が与えた説明について少し混乱しています。特定の例。本の中で、著者は、我々は(これらの配列は私が作っや本には表示されません)文字列の配列を持っていることを説明しています文字列の各文字列をソートし、その文字列をソートするBig Oの解析

["abc", "a", "dcglkjsl"]; 

このアルゴリズムの最初のタスクがあることを、各文字列を並べ替えることです左:

["abc","a","cdgjklls"]; 

そして、このような何かオリジナルの配列をソート:今

["a", "abc", "cdgjklls"]; 

を、著者は(Oの解に到達するために、部分によってアルゴリズムの一部を分析するために行きますa * s(log a + l og s))ここで、aは配列の長さ、sは最長文字列の長さです。

個々の文字列の複雑さO(s log s)をソートするのはなぜですか?私はその周りに私の頭を包み込むように見えることはできません。作者は、それは明らかに明白な結論だが、私はなぜそれが理解できないと言います。私は、この重要な情報を理解すれば、上記の最終的な解決策に著者がどのように到達したかを理解することができます。

答えて

0

個々の文字列の複雑さO(s log s)をソートするのはなぜですか?

あなたは、文字列の文字のそれぞれを移入するstd:mapまたはbalanced Binary Search Treeを選択した場合、それはマップやBSTを埋めるためにO(s log s)を取るだろう。 log sはツリーの深さです。