【初心者向け解説】1分で理解するアルゴリズムの基本
アルゴリズムは身近なもの
アルゴリズムと聞くとなんだかとてもサイバーな世界に身を投じないといけないと一歩引いてしまう方もいらっしゃるでしょう。
とは言え、アルゴリズムを習得することはプログラミング教育を行う人々にとっては切っても切り離せない存在です。勇気をもって1分間この記事に目をとおしてみてください。
アルゴリズムはとても身近な存在であることをご理解いただけると思います。
アルゴリズムは「パターン化された考え方」
そもそもとして、アルゴリズムとは何でしょうか。それは「パターン化された考え方」です。
自分で作り出すこともできますし、昔の人たちが残したアルゴリズムも存在します。自分で作り出すことは難易度も高いので、まずは既存のアルゴリズムを使ってみてください。
例えば、物事を考える際に1から10まで全て自分ひとりで考えるよりも、既に完成された考え方を採用した方が、間違いも少ないですし効率的です。
アルゴリズムの種類
アルゴリズムにはどのような種類が存在するのでしょうか。
昔の人たちが残した有名なアルゴリズムをもとに紹介していきます。
①探索系
「探索系」に分類されるアルゴリズムは読んで字の如く「探し方のパターン」が定義されています。
探索系のアルゴリズムには以下のような種類があります。
- 線形探索(リニアサーチ) :候補の中を最初から順番に探すパターン
- 二分探索(バイナリサーチ):候補を2つに分けて探すパターン(順番に沿って並び替えが行われていることが条件)
細かい解説は別の機会にしますが、ざっくりと理解するのであれば、線形探索は「最初から探す」ですし、二分探索は「途中から探す」です。
上記の場合は、我々が日頃モノを探すときに直感的に行なっていることがパターン化されているのです。
②ソート系
「ソート系」に分類されるアルゴリズムも読んで字の如く「並べ替え方のパターン」が定義されています。
ソート系のアルゴリズムには以下のような種類があります。
- バブルソート:候補の中から隣り合った2つの値を比較しながら並べ替えを行うパターン
- ヒープソート:候補を二分木(階層構造)にひとまず並べ、上下の値を比較しながら並べ替え(最大値を上にする)を行うパターン
ソート系は処理速度や並べ替えの対象によって使い分けることは必要ですが、実際は「比べて並べ替える」という基本は変わりません。
その他にも様々な種類がありますが、また別の機会に解説したいと思います。
アルゴリズムを覚えると効率的になる
アルゴリズムが理解できるとプログラムがより一層楽に作成できるようになりますし、プログラム以外の日常生活や仕事においても効果を発揮します。
また、アルゴリズムはプログラムの処理の流れそのものです。頭中で思い浮かんだ処理の流れを図解したものをフローチャートとして書き出します。
使い分けや、使いこなすのに少々経験が必要ですが、まずは考え方をマネしてみることが重要です。