退会ユーザー
コンピュータで解くことができる問題に対する解決方法(解決するための過程) を記述したものがアルゴリズムです。 問題に対する解決方法って1つではくて、複数あって、 一般的な問題に対しては、さまざまな方法が、多くの人たちによって考えられています。 それぞれメリット、デメリット、計算量(解くためにかかる時間)などがあって、 問題に対して、入力する内容によっては、良かったり悪かったりします。
プログラミングの勉強の中で、アルゴリズムを勉強する理由って、 「発想の方法・考え方」を学ぶことだと思います。 また、プログラムを書く力を養うってのも、もちろんあります。
作りたいシステムのプログラムを記述するとき、 プログラムの内容って、WEBや書籍には載っていないですよね。 プログラムを書きながらメリット・デメリット、計算量など、自分で考えながら 効率の良いロジックを書けるようにならなければなりません。
また、画面のボタンを押した時、処理結果が表示されるまでの時間が遅いといった苦情があったとき、どういった理由で遅いのか考察したり、どうすれば解決できるのかを考えられるようにならなければなりません。
アルゴリズムの書籍で ・データのソート ・データの探索 ・グラフ(道や路線やネットワークの経路) ・文字列検索 などが、プログラムの問題として出てくると思います。
例えば、データを並び替えるといった問題に対して、 バブルソート、選択ソート、挿入ソート、ヒープソート、クイックソート などなど解決方法が、多くの人たちによって考えられてきました。
それぞれのプログラムを書くことを目的としないで、 解決するための過程や、メリット、デメリット、計算量などを知って、自分なりに考えることが アルゴリズムの勉強としては、大切じゃないかな思います。
もしかしたら、もっと効率の良いアルゴリズムを思いつくかもしれません。 そのときは、歴史に残る大発見になるかもですね。
<追記> 授業で使われていた本はこんな本でした。 コンピュータアルゴリズム 津田 和彦 https://www.amazon.co.jp/dp/4320121430/ref=cm_sw_r_tw_dp_C8RK8JSG2AHMHWWH0XH9