2017-03-18 7 views
0

私はアルゴリズム4、ロバートセジウィックのコースでクイックソートを勉強しています。クイックソート:パーティショニングの分析

Iはクイックソートのコードの次のパーティションは、私は上記のコードのT(n)を知りたい長N

private static int partition(Comparable[] a, int lo, int hi) 
{ 
    int i = lo, j = hi+1; 
    while (true) 
    { 
    while (less(a[++i], a[lo])) 
     if (i == hi) break; 

    while (less(a[lo], a[--j])) 
     if (j == lo) break; 

    if (i>= j) break; 
    exch(a, i, j); 
    } 

    exch(a, lo, j); 
    return j; 
} 

の配列に比較の数を知っているたいです。 (比較)

私の考えでは、2Nの比較が必要です。

iが左から右へ移動するのにNが必要であり、jが既に配列(A、B、C、D、E、 F、G、H)。

が(=より少ないと比較)

+0

「配列の比較数」とはどういう意味ですか? – lsof

+0

は 'number of compare'と呼ばれ、' if(i> = j)break; 'ステートメント? – lsof

+0

@RajasubaSubramanianのみ 'less()'です。次に比較数は何ですか? – progresivoJS

答えて

0

このパーティション関数の時間複雑さは私の神、それはiの繰り返しで私のミスだT(n) = O(n)

+0

チルド記号(定数を含む)で、T(n)とは何ですか? – progresivoJS

+0

nを比較すると〜Nが必要です。 –

+0

はい、間違いです。 – progresivoJS

0

です。唯一の1が比較取る停止するiを発見する過程では、

だから、〜Nの比較が必要です。

関連する問題