2023年2月1日のブックマーク (2件)

  • うさぎでもわかるヒープアルゴリズム

    こんにちは、ももやまです! 今回は高速なソートアルゴリズムの1つであるヒープソートのアルゴリズムについて分かりやすくまとめたいと思います! 1.ヒープソートってどんなソートなの? では、ヒープソートはどのようにしてソートしていくのかについて、手順ごとに図を使って丁寧に説明していきたいと思います。 今回は、 a[8] = {14,9,3,12,21,8,1,17} を昇順(1,2,3…)にソートします。 (1) 手順1 配列を木構造にする まずは下のように配列を左上から順番に木構造に並べます。 (2) 手順2 木構造をヒープ構造にしていく つぎに作った配列をヒープ構造にしていきます。 ヒープソートは、後ろから順番にソートするアルゴリズムなため、ヒープ化する際は、昇順ソートの場合はヒープは降順,、降順ソートの場合はヒープは昇順にする必要があるため注意してください。 ヒープ構造とは、すべてのノー

    うさぎでもわかるヒープアルゴリズム
    himabato
    himabato 2023/02/01
    昇順の場合 “ヒープ構造とは、すべてのノードにおいて「親ノードは、(子ノードが存在すれば)どの子ノードよりも大きい」”
  • Insider's Computer Dictionary:ヒープ とは? - @IT

    プログラムで利用するデータ領域の一種。ヒープ(heap)とは「積み重なる」「堆積(たいせき)する」という意味。プログラムの実行につれて動的に確保され、その領域が順次拡大するさまから、ヒープと呼ばれる。 ヒープは、プログラムで利用する動的なデータ領域を確保するために利用される。例えばファイルからデータを読み込んでソート処理する場合、実行時にならないと要素数が確定しない。そのため、あらかじめ要素数よりも十分大きなデータ領域を用意しておく方法があるが、これでは無駄が多い。こういう場合は、データを読み込むごとにヒープ上に確保したデータ領域へ保存すればよい。こうすれば実際に必要なサイズだけを確保することができ、メモリの利用効率がよい。 ヒープと似た概念としてスタックがあるが、その利用方法は少し異なる。スタックでは最後に使ったものが先に解放されるが、ヒープでは確保すると解放の順序に特に関連性はない。ヒ

    himabato
    himabato 2023/02/01
    “ヒープ(heap)とは「積み重なる」”という意味