データを整列させるアルゴリズムを紹介する。
基本交換法(バブルソート)
隣接するデータの大小を比較
する。
必要に応じて入れ替えることで全体を整列させる。
先頭の2つから整列させていく。
基本選択(選択ソート)
対象データの内、最小、最大のデータを取り出して、先頭データと交換
して
全体を整列させる。
基本挿入法(挿入ソート)
対象のデータ列を整列済みのものと未整列のもの
とに分かれます。
未整列のデータ列から一つずつ
取り出して、整列済みのデータ列に適切な場所に当てはめて
いく。
それで全体を整列させる。
より高速な整列アルゴリズム
ここからは応用的な整列アルゴリズムを紹介する。
シェルソート
ある一定間隔おきに取り出した要素でソート
を繰り返していく手法
出典 https://medium-company.com/%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88/#1
気づき
グループ分けして、挿入ソートの繰り返しみたいなことか。
クイックソート
ある中間的な基準値を決めてそれより小さい値と大きい値のグループに振り分ける
。
そのグループでまた基準値を決めてグループに振り分ける
を繰り返す。
気づき
2分木探索法と似ているな。
ヒープソート
未整列のデータを「ヒープ」の性質
を持つ木構造の構成にして、そこから最大値または最小値
を取り出して整列、これを繰り返すことで全体を整列させる手法
ヒープとは?
-
ヒープは最小値(または最大値)を求めるのに適した木構造の一種であり、「子要素は親要素より常に大きいか等しい(または常に小さいか等しい)」という制約を持つ。子要素が複数ある場合、子要素間の大小関係に制約はない。
出典 https://ja.wikipedia.org/wiki/%E3%83%92%E3%83%BC%E3%83%97#:~:text=%E3%83%92%E3%83%BC%E3%83%97%E3%81%AF%E6%9C%80%E5%B0%8F%E5%80%A4%EF%BC%88%E3%81%BE%E3%81%9F%E3%81%AF,%E9%96%A2%E4%BF%82%E3%81%AB%E5%88%B6%E7%B4%84%E3%81%AF%E3%81%AA%E3%81%84%E3%80%82&text=%E3%81%A7%E8%A1%8C%E3%81%88%E3%82%8B%E3%80%82,%E5%AE%9F%E8%A3%85%E3%81%A8%E3%81%97%E3%81%A6%E3%82%82%E4%BD%BF%E3%82%8F%E3%82%8C%E3%82%8B%E3%80%82 -
小さいヒープの関係を表す
https://medium.com/@yasufumy/data-structure-heap-ecfd0989e5be
出典 https://medium-company.com/%E3%83%92%E3%83%BC%E3%83%97%E3%82%BD%E3%83%BC%E3%83%88/#1
気づき
ヒープの性質を利用して根を取り出して最小、最大から取り出すのか。
マージソート
整列対象のデータを2分割していく操作を繰り返し、要素数が1になるまで細分化、そして細分化した要素同士を整列しながら戻していく手法です。
出典 https://medium-company.com/%E3%83%9E%E3%83%BC%E3%82%B8%E3%82%BD%E3%83%BC%E3%83%88/
出典