🌝

アルゴリズムを勉強するの巻

2021/01/11に公開

目的

プログラミングをはじめて2ヶ月ほど経過し、webアプリも作れるようになったものの、アルゴリズムとか書いたこと無いし、やっぱり知識として勉強したほうがいいのかなぁと思い、初歩的なものを書いてみることにしました。

結論から言うと、ものすごく勉強になったし、同じような初学者の人たちにもぜひおすすめしたいです。

勉強方法

ベタですが、アルゴリズム図鑑というアプリに載っていたものをいくつかjsで書きました。

  • バブルソート
  • 選択ソート
  • 挿入ソート
  • 線形探索
  • 二分探索
  • ユークリッドの互除法(最大公約数を算出する方法)

アプリを見て「ほーん、そうやって動くのね...」と概念を理解できたら、実際に書いてみました。
どうしても自己解決できないところは他の方のコードを参考にしつつも、極力自力でやるようにしました。

見込める効果

  1. どのように実現するかtry&errorを繰り返すことで、コードを書く際の考え方が身につく
  2. 仮にわからなくても答え(というか他の人のコード)を見て新たな発想を得ることができる

これまでwebアプリを作ってきても正直そこまでロジックらしいロジックを書いているという感じではなかったので、とても刺激的でした。
一旦退避させる変数を用意したり、for文の入れ子を工夫したりと、コードを書く上での考え方やノウハウが詰まっているなぁと感じました。
そしてできたコードと他の方の書いたコードを比較すると、「こんな書き方があったのか!」という発見や、「なんでこの書き方で同じ結果になるの?」みたいな疑問も生まれ、それを調べることで周辺の知識も身につきました。

そういった点でアルゴリズムを知る、作るというのは本当に良い勉強法だと感じます。

ついでに...

本日知った知識というのは

  • 式の評価で計算を行った場合、その時点で反映される

というものでした。
以下、例です。

let a = 1,b = 2;
let sum;
if((sum = a + b ) > 5){
  // 処理1
}
console.log(sum);  // 3が出力される

こんな感じでifの条件にsum = a + bと書いた場合、if文の条件がfalseだったとしても、後でsumを出力するとa + bの合計値が返ってくる、といった具合です。
そもそも条件の中で代入するなんて使ったことがなかったので個人的にはかなり衝撃でした。
これもまたアルゴリズムのおかげ。
今後も是非継続していきたいと思います。

ではでは本日はこれにて御免。

Discussion