2011-12-21 4 views
2

あなたはこの質問が整数の配列に

は、上部のログ(N)または(n)のトップSQTを探す何を意味するのか理解しています整数の配列内の値を値を上部のログ(N)または(n)のトップSQTを探します線形時間よりも短くなります。

質問しない場合は、質問http://www.careercup.com/question?id=9337669です。

この質問を理解するのを手伝ってください。解決してもらえますか? (私は一度それを解決するかもしれないことを理解していますが)

ありがとうございました。

答えて

3

配列がソートされていないと仮定すると、この問題はすべての要素を読み取る必要があるため[Omega(n)の問題は非ソート配列の問題です。だから、それのための亜線形解はありません。

アレイdupesを含むが、第二工程でdupesをトリミングすることはかなり容易である場合には、この擬似コードが正しくないselection algorithm

1. find the log(n) biggest element. //or sqrt(n) biggest element... 
2. scan the array and return all elements bigger/equal it. 

(*)を使用してO(n) [線形]溶液があります。

+0

ありがとうございますAmit。私はこれを理解することができませんでした "配列をスキャンし、すべての要素を返す/それを大きくする"。ここに「それ」って何を意味していますか? 私がはっきりと理解している場合 この質問は、配列内のすべての要素を返すことを望んでいますか?> top log(n)またはtop sqt(n)?? 上記のEmilioは、私がしたいのはsqt [配列の中で最大の要素]を返すことだけです。 –

+0

'it'は、ステップ(1)で見つかった要素です。 'top log(n)またはtop sqt(n)values .... 'と** not **を示しているので、質問は' log(n)/ sqrt(n) 'トップログ(n)またはトップsqt(n)の値を見つける' [値** s **と値ではないことを尋ねる] – amit

+0

はそれをAmitにしました。 ありがとうございました。 –

6

ソートされていない配列の場合、複雑さは線形ですが、log(n)とsqrt(n)がともに単調増加関数であり、したがってmax(log(n)、..)を観測することによってパフォーマンスを向上させることができます。 。)もlog(max(n、...))で、sqrtと同じです。

したがって、max(n)(直線)を求め、logとsqrtを計算してください。

+0

もちろん、ゼロ以外の正の整数を仮定しています。 –

+0

@ edA-qamort-ora-y:trueですが、ピーク値を見つけるために「レート」には興味がありません。 –

+0

質問が分かりました。ありがとう。 –