2.5 ヒープ ヒープとは この部分木で一番 大きい値は根の14 16 この部分木で一番 大きい値は根の10 14 10 11 4 9 2 6 3 8 どの部分木でもその中で 一番大きい値は根にある ヒープとは 1 h[i]⇔v 2 3 16 h[2i]⇔vの左の子 4 5 6 7 h[2i+1]⇔vの右の子 14 10 8 9 10 1 112 3 4 95 16 14 10 11 9 4 2 6 6 3 73 8 8 4 98 10 2 6 ヒープの再構成 16 14 10 11 4 9 2 6 3 8 ヒープの再構成 ヒープが壊れる 16 最大要素を取り出す 14 10 11 4 9 2 6 3 8 ヒープの再構成 6 14 10 11 4 9 2 6 3 8 一番端のデータを トップに移動 ヒープの再構成 部下の強い方と ポジションを争う 6 14 11 4 10 9 2 3 8 ヒープの再構成 負けたので降格 6 14 11 4 10 9 2 3 8 ヒープの再構成 部下の強い方と ポジションを争う 14 6 11 4 10 9 2 3 8 ヒープの再構成 負けたので降格 14 6 11 4 10 9 2 3 8 ヒープの再構成 部下の強い方と ポジションを争う 14 11 6 4 10 9 2 3 8 ヒープの再構成 勝ったので、そこが 実力通りのポジション 14 11 6 4 10 9 2 3 8 ヒープが完成したので 再構成終了 P32のdownheapの動き 16 6 getheap h[1]:=h[n] 14 10 11 4 9 2 6 3 8 一番端のデータを トップに移動 P32のdownheapの動き v 6 6 h[k] 14 11 4 10 9 2 3 8 根にあるデータを 変数vに保存 P32のdownheapの動き v 6 h[k] 14 h[i] 11 4 9 2 10 h[i+1] 3 8 強い方と比較 P32のdownheapの動き v 6 h[k] 14 h[i] 11 4 9 2 10 h[i+1] 3 8 部下が勝ったので 部下を上に上げる P32のdownheapの動き v 6 14 10 h[k] 11 4 h[i] 2 9 3 8 h[i+1] 強い方と比較 P32のdownheapの動き v 6 14 10 h[k] 11 4 h[i] 2 9 3 8 h[i+1] 部下が勝ったので 部下を上に上げる P32のdownheapの動き v 6 14 11 h[k] 4 h[i] 2 h[i+1] 10 9 3 8 強い方と比較 P32のdownheapの動き v 6 finish 14 11 h[k] 4 h[i] 2 h[i+1] 10 9 3 8 勝ったので ポジションに入る P33のupheapの動き 16 upheap h[n]:=13 10 11 9 6 4 2 13 3 8 一番最後に13を追加 P33のupheapの動き v 13 16 10 11 9 6 4 2 13 3 8 一番最後のデータを 変数vに保存 P33のupheapの動き v 13 16 10 11 9 h[i] 3 6 4 2 上司と比較 8 P33のupheapの動き v 13 16 10 11 9 6 4 2 3 8 上司が負けたので 上司を下げる P33のupheapの動き v 13 16 10 11 h[i] 3 6 4 2 9 上司と比較 8 P33のupheapの動き v 13 16 10 11 3 6 4 2 9 8 上司が負けたので 上司を下げる P33のupheapの動き v 13 16 h[i] 10 11 6 4 2 9 3 上司と比較 8 P33のupheapの動き v 13 16 10 finish 11 6 4 2 9 3 8 負けたので ポジションに入る downheapとupheapの時間計算量 • それぞれの計算量は何に依存するか? • 教科書のP33を参考にせよ 2.6 集合の表現と演算 集合の基本演算 • データを集合とみなす ⇒ データの操作 ⇔ 集合の演算 • 基本演算 リスト – – – – – menber(x,S) search O(|S|) adjoin(x,S) search + insert O(|S|) remove(x,S) search + delete O(|S|) union(S1,S2) O(|S1|・ |S2|) intersection(S1,S2) O(|S1|・ |S2|) ビットベクトル • 第i要素の有無で、i番目のビットが1,0 第1要素 第3要素 第5要素 第7要素 第2要素 第4要素 第6要素 第8要素 集合A 1 1 0 1 ∩ /∪ 集合B 0 1 1 1 2 4 6 8 集合A 0 1 0 1 0 1 and /or 0 1 1 2 3 6 5 8 集合B
© Copyright 2024 ExpyDoc