Files
hello-algo/ja/docs/chapter_heap/summary.md
T
Yudong Jin 7257641e0e Retranslate the complete Japanese online edition from Chinese (#2008)
* Retranslate the complete Japanese online edition from Chinese

* Fit Japanese homepage labels and localize heading permalinks

* Point Japanese contribution instructions to the Japanese preview

* Replace locale conditionals with multilingual UI tables
2026-10-30 02:12:26 +08:00

2.0 KiB

まとめ

要点の振り返り

  • ヒープは完全二分木であり、満たす条件によって最大ヒープと最小ヒープに分けられます。最大(最小)ヒープでは、ヒープの先頭要素が最大(最小)です。
  • 優先度付きキューは、取り出しに優先度を持つキューと定義され、通常はヒープで実装されます。
  • ヒープの主な操作とその時間計算量は、要素の挿入が $O(\log n)$、先頭要素の取り出しが $O(\log n)$、先頭要素へのアクセスが O(1) などです。
  • 完全二分木は配列で表現するのに非常に適しているため、通常は配列にヒープを格納します。
  • ヒープ化はヒープの性質を維持するための操作であり、挿入と取り出しの両方で用います。
  • n 個の要素を入力してヒープを構築する時間計算量は O(n) まで改善でき、非常に効率がよいです。
  • Top-k は古典的なアルゴリズムの問題であり、ヒープを用いると時間計算量 O(n \log k) で効率よく解けます。

Q & A

Q:データ構造の「ヒープ」とメモリ管理の「ヒープ」は同じ概念ですか?

両者は同じ概念ではなく、たまたまどちらも「ヒープ」と呼ばれているだけです。コンピュータシステムのメモリにおけるヒープは動的メモリ割り当ての一部であり、プログラムは実行時にここへデータを格納できます。プログラムは必要な量のヒープメモリを要求し、オブジェクトや配列などの複雑な構造を格納します。データが不要になったら、メモリリークを防ぐためにそのメモリを解放する必要があります。スタックメモリに比べ、ヒープメモリの管理と使用にはより注意が必要であり、不適切な使い方はメモリリークや不正なポインタなどの問題につながります。