• 演習1:ヒープ構造を作れ
    コツとしては、
    ・左側優先
    ・左が一区切り付いたら右側を見る(各段で)。

    @親より子の方が大きいので入れ換える。

    Aここで一度右側を見る。
    今回は親の方が大きいのでそのまま。
    B上3つ分は現状でのソートが済んだので1段下を左側から見ていく。
    親より子の方が大きいので入れ換える。
    C入れ替えた先の親とも比較。
    ここでも親より子の方が大きいので入れ換える。

    D親の方が子より大きいのでそのまま。
    E親より子の方が大きいので入れ換え。
    F入れ替えた後、更に親とも比較。
    8<9と親より子の方が大きいので入れ換え。

    G親より子の方が大きいので入れ換え。
    H更に入れ替え先の親とも比較。
    9<10なので入れ換え。

    I親より子の方が大きいので入れ換え。
    J更に入れ替え先の親とも比較、今回は入れ換え。
    K更に入れ替え先の親とも比較、今回はそのまま。

    L親の方が子より大きいのでそのまま。
    M親より子の方が大きいので入れ換え。
    N更に入れ替え先の親とも比較、今回は入れ換え。
    O更に入れ替え先の親とも比較、今回は入れ換え。

    P親の方が子より大きいのでそのまま。

    従ってヒープ構造は上記の様になる。
  • 演習2:バブルソートでN個のデータについて、
    @比較回数は何回か?
    バブルソートにおける並び換えで、1つの値を確定するまでに行う比較回数はn-1回。
    以降の確定までに行う比較回数はn-2回,n-3回・・・2回,1回となる。
    従って比較回数は
    (n-1)+(n-2)+・・・+2+1
    =((n-1)+1)
    ×(n-1)/2
    =(n
    2-n)/2
    となる。


    A入れ替え回数の最大と最小を求めよ。
    最小:最初からソートされている数列の場合は入れ換えはない。
    従って比較回数は0回。

    最大:比較の度に入れ換えも行う場合に最も入れ替え回数が多くなる。
    従って最大回数は(n2-n)/2