アルゴリズムとデータ構造入門
初めてアルゴリズムとデータ構造を学ぶ方向けの入門記事一覧です。
はじめに
そもそもアルゴリズムとデータ構造とは何かを知っておきましょう。
計算量の基本とアルゴリズムの解析
アルゴリズムの話をするにあたって、計算量の話は避けては通れません。
数学の話も多く、特に指数や対数といった概念は良く出てきます。難しい部分は読み飛ばしても構いません。
ソートアルゴリズム
アルゴリズムの入門的な位置づけであるソートアルゴリズムを学びましょう。
ソートアルゴリズムを実務などで書くことはほぼ無いかと思いますが(実は多くのプログラミング言語にはソート用の関数が用意されています)、ソートは非常に様々な種類があり学ぶことが多いです。
これらを知ることによって計算量やアルゴリズムの考え方を自然と身につけることができるでしょう。
- ソートアルゴリズムの概要
- 選択ソート(Selection Sort)
- バブルソート(Bubble Sort)
- 挿入ソート(Insertion Sort)
- マージソート(Merge Sort)
- クイックソート(QuickSort)
探索アルゴリズム
目的のものを検索するというのはよく使われるだけあって様々なアルゴリズムがあります。
- 線形探索(Linear Search)
- 二分探索(Binary Search)の初級編
- 複数ループによる全探索アルゴリズム
- 深さ優先探索(Depth First Search)の基本
- 幅優先探索(Breadth First Search)の基本
貪欲法
全探索するのではなく場当たり的に良さそうなものを選んでいくアルゴリズムを貪欲法と言います。上手くいく時もあれば、上手く行かないときもあり、プログラムを書く前にそれで良いのかをしっかりと考えることが大切です。
動的計画法
少し難しめですが効率的に計算するための手法として、「動的計画法」と呼ばれるものがあります。
数学
数学的な計算をプログラミングによって解決することは非常に良くあります。
基本データ構造
アルゴリズムは何らかのデータ構造を利用する場合がほとんどなので、まずは基本となるデータ構造をいくつか知っておく必要があります。