2011-12-09 2011-12-05 珠玉のプログラミング コラム14 ヒープ * ヒープとは 二分木のデータ構造であり、次の二つの性質を持つ。「ヒープの順序」: 親ノードは必ず子ノードより小さいか等しい(または大きいか等しい)。 「ヒープの形」: バランスがかけているのは右下のみ。これは配列Aで表現するのに都合がいい。 つまりA[0] をルートノードとし、A[1],A[2] をその子ノード、A[3..6]を孫ノード、とする。すなわち ∀2 * 二つの重要な関数 shiftup() と shiftdown() * ヒープソートと優先度つきキューが実現できる。 * ヒープソートの計算量 平均 nlogn、最悪も nlogn