teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/10/28 22:51

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -4,4 +4,8 @@
4
4
 
5
5
  ヒープは随時追加・削除される大量の順序付きデータを整理して高速に検索したい時に使います。
6
6
 
7
- 例えば、データの中から最も小さいものを頻繁に知りたい場合、知りたい時にいちいち線形検索していたのでは時間がかかります。また新しいデータが挿入されたり既存のデータが削除されるたびにソートしていても時間がかかります。バイナリサーチが可能なら検索は高速になりますが、挿入・削除でのデータの移動に時間がかかります。しかし、ヒープを使えば高速にデータを検索・挿入・削除することができます。
7
+ 例えば、データの中から最も小さいものを頻繁に知りたい場合、知りたい時にいちいち線形検索していたのでは時間がかかります。また新しいデータが挿入されたり既存のデータが削除されるたびにソートしていても時間がかかります。バイナリサーチが可能なら検索は高速になりますが、挿入・削除でのデータの移動に時間がかかります。しかし、ヒープを使えば高速にデータを検索・挿入・削除することができます。
8
+
9
+ 引用した優先度付きキュー、グラフ問題が具体例になります。ヒープはデータを整理するための構造ですが、人間の頭ではそのままのヒープを見ても一目瞭然とはなりません。そこで人間の目に触れる時にはヒープそのものではなく、ヒープで保存されているデータをさらに加工して出力することになります。
10
+
11
+ つまり内部で使われている構造なので、直接目にすることは無いでしょう。