アルゴリズムの勉強の仕方を教えて頂けたらと思っています。
自分でアルゴリズムの勉強を始めたのですが、いきなり挫折しました。
Aizu Online Judgeというサイトで、基本的なアルゴリズムとデータ構造を学び始めたのですが、一番初めの「挿入ソート」で、すでにつまづいています。
他の方が書いたプログラミングの回答が見られるので、見たのですが、何をやっているのか、よくわかりませんでした。
どうやって勉強したら、良いのでしょうか?
できれば、アルゴリズムの勉強が嫌にならず、アルゴリズムが理解でき、自分がそのアルゴリズムを使おうと思った時に、その発想が思い浮かぶようになるには、どう勉強したら良いでしょうか?
挫折者でも何とかなるような勉強の仕方を教えてくださると嬉しいです。
よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
ごめんなさい。挿入ソートがどこに書いてあるかわかりませんでしたが取り敢えず回答します。
ソースコードを読むのになれた人は、ソースコードで考えるということができますが、初心者には難しいはずです。実際にやりたいことをしっかり慣れてからソースコードにあたりましょう。
まず、トランプでもなんでも良いので、手順を覚えるまで自分でソートして手順を体で覚えて下さい。
ソートアルゴリズムに関してはこのyoutubeが有名です。面白いでしょう。手順が分からなくなったらシリーズで見ると良いです。(何をしているかわからないというなら、説明を追記します。)
その上でソースコードを眺めると意味がわかると思います。たまに素直でない回答を書く人がいるので気にしないようにして下さい。
投稿2016/07/16 04:09
総合スコア2883
0
何もないところからアイディアを創造するのはクヌースでもない限り無理なので、別に他人のコードを見て考えるのは悪いことではないと思います。自分もよくやります。
(ただし、慣れてきたら他人のコードを見ないで解答する方が面白くなってくるはずです)
さて、他人のコードを理解する方法としては、とりあえず他人のコードをコピペしてきて、実際に動かしてみるのが一番いいと思います。
途中でデバッガを使ったり、JavaならSystem.out.printf
・Rubyならp
を気になるところに追加して、データがどのように変化してみると分かりやすくなります。
(このときどこにprintf
を追加すればいいか、というのは難しい話で経験が必要になるところです)
また、アルゴリズムそのものを理解するには、そのアルゴリズムの名前で色々と検索してみて、視覚的に説明しているようなサイトを探すといいかもしれません。
(例えば挿入ソートならこんな動画があります https://www.youtube.com/watch?v=z0YcQIqyV5Q)
ただし、アルゴリズムの学習はやっていることが何かを開発することに比べて地味ですし、本当に学問のようなものなので、直感的に理解することは簡単なことではありません。
地道に理解しようとするしかないです。
さきほどの質問に引き続きですが、アルゴリズムの学習がんばってください。
投稿2016/07/16 04:04
総合スコア545
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/07/16 04:41
0
いきなり人のプログラムを見てもわからないことはよくあることです。
どうしたら結果が出せるのか自分で考えましょう。
色々考えた上で他人のプログラムを見たらすっと理解できるはずです。
自分で考えることのできない人は何をやってもダメ。
逆にできる人は何でもできます。
投稿2016/07/16 03:47
総合スコア28660
0
投稿2016/07/16 08:56
総合スコア2208
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/07/16 09:01
2016/07/16 09:04
2016/07/16 09:06
退会済みユーザー
2016/07/17 01:24
0
参考情報:
- Rubyでアルゴリズムを学ぶのに適した書籍やサイトを教えてください http://ja.stackoverflow.com/questions/17758/
- プログラミング初心者でもOK!Ruby・Ruby on Railsのおすすめ書籍8選 http://techacademy.jp/magazine/6225
- ソートアルゴリズムについてまとめてみた https://moneyforward.com/engineers_blog/2016/02/02/sort-algorithm/
投稿2016/07/16 04:01
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/07/16 04:21
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/07/16 04:18
退会済みユーザー
2016/07/16 04:36
2016/07/16 04:55
退会済みユーザー
2016/07/16 05:19