テクノロジ系 > 大分類1 基礎理論 > 中分類2 アルゴリズムとプログラミング > 2.アルゴリズム > (2)代表的なアルゴリズム > ① 整列・併合・探索のアルゴリズム
アルゴリズムとは、処理手順のことを言います。アルゴリズムはこれまでの研究結果によって、この場合はこういう処理手順が良いということが明らかになっているものが多くあります。整列、併合、探索のアルゴリズムはプログラムの処理の中で非常に良く用いられる分野であるため、多くの研究がされています。ある事柄を実現するためのアルゴリズムは一つとは限りませんが、より正確かつ効率的なプログラムを組みためには定番のアルゴリズムを知っておく必要があります。
整列アルゴリズム
整列とは、データをある基準に沿って並び替えることです。併合とは、二つの整列済みのデータの並びがあったときに、その二つを一つの整列されたデータにすることです。併合のアルゴリズムは整列の応用バージョンで、応用情報技術者試験においては整列を知っておけば溶ける問題が多いため省きます。
整列アルゴリズムはシラバスの用語例によれば以下の7つが挙げられています。
- 選択ソート
- バブルソート
- マージソート
- 挿入ソート
- シェルソート
- クイックソート
- ヒープソート
このうち、選択ソート、バブルソート、挿入ソートの3つが基本3ソート、残りが応用4ソートと呼ばれています。基本3ソートはアルゴリズムが単純ですが効率は悪く、応用4ソートはアルゴリズムは複雑ですが効率が良いです。
選択ソート
選択ソートは未整列のデータ列の中から最小値(または最大値)を探して整列し、整列部分・未整列部分に分け、未整列部分でまた同じように最小値を探して整列します。この操作を全体が整列部分になるまで繰り返します。計算量はO(n2)になります。
バブルソート
バブルソートは隣り合う要素を比較して、大小が逆であれば入れ替えを行う操作を繰り返すアルゴリズムです。計算量はO(n2)になります。
マージソート
未整列のデータ列を分割していき、それをマージを繰り返して一つの整列データにする方法です。マージをするたびに整列されていきます。計算量はO(nlog n)になります。
挿入ソート
整列データの中に未整列データを適切な位置に入れていくアルゴリズムです。すでに整列データがある場合には早く処理ができます。計算量はO(n2)です。
シェルソート
一定間隔ごとにグループ分けしたデータを並び替えを行い、徐々にグループ分けの間隔を狭めて並び替える動作を繰り返すアルゴリズムです。挿入ソートの改良版で、ドナルド・シェルというアメリカの研究者が考案したためこの名前が付けられています。計算量はO(nlog n)となります。
クイックソート
クイックソートは、ある基準値をあらかじめ決めておき、それより大きな値を集めた列と小さな値を集めた列に振り分けます。その中でさらに基準値を決めて、同様の操作を繰り返すアルゴリズムです。計算量はO(nlog n)となります。
ヒープソート
木構造のヒープを利用して整列していくアルゴリズムです。計算量はO(nlog n)となります。
探索のアルゴリズム
探索のアルゴリズムはデータの並びの中からある目的のデータを探しだすアルゴリズムです。探索のアルゴリズムはシラバスでは以下の3つが挙げられています
- 線形探索法
- 2分探索法
- ハッシュ表探索法
線形探索法
線形探索法はデータを先頭から順番に探索していく単純なアルゴリズムです。計算量はO(n)になります。
二分探索法
二分探索法はデータをあらかじめ整列しておき、真ん中のデータと探索するデータを比較します。探索するデータの方が小さければ、前半のグループのデータを見に行き、その中の真ん中のデータを比較することを繰り返します。計算量はO(log n)となります。
ハッシュ表探索法
ハッシュ関数を用いると、データからハッシュ値という値を求めることができます。このハッシュ値からハッシュ表を作成し、その表に基づいて格納します。探索する際もその表に従って探索します。計算量はO(1)となります。ハッシュ値が衝突するシノニムという問題が発生することがあります。
整列・併合・探索のアルゴリズムのポイント
アルゴリズム分野の中心となる論点で、実務でも非常に役に立ちます。アルゴリズムの処理の流れと名前を紐づけて覚えておく必要があります。処理の流れや特徴を文章で書いてアルゴリズム名を答えさせる問題や、処理の過程で途中はどのように並んでいるかを答えさせる問題など多岐にわたります。