アルゴリズムの勉強: クイックソート、マージソート[AOJ 10029][Ruby/Java]

今回は、『AOJ 10029 - ソートアルゴリズム(クイックソート、マージソート)』についての記事です。RubyとJavaのサンプルソースを載せています。

勉強のためにクイックソートと、マージソートを書いてみました。一般的にはマージソートよりもクイックソートの方が高速です。しかし、AOJで実際にプログラムを書いて実感しましたが、『クイックソートのアルゴリズムはソート対象によって計算量が変わる』ので、計算量が安定しているという意味では、マージソートの方が優れていることを知りました。でもそれ以上に、Rubyの実装の方が安定かつ高速ですので、普段からプラットフォームの恩恵にあずかっていることを実感しました!

Read More

アルゴリズムの勉強: バケットソート(ビンソート)[AOJ 10029][Java]

今回は、『AOJ 10029 - ソートアルゴリズム』をバケットソート(ビンソート、度数ソート)で解いてみました。

JavaのArray系のデータ構造をあまりわかっていないまま使っています。おそらくもう少し効率的なデータ構造を使って表現すれば処理やメモリ使用量が効率化すると思います。

Read More

『アルゴリズムのキホン』を読みました & AOJでやってみた! 【書評】

数年前に読んだ『アルゴリズムのキホン』を再勉強も兼ねて読みなおしています。プログラミングの基礎力を高めるのが今の目標なので徹底的に頑張ります!

ちなみに、アルゴリズム系を勉強するときにオススメなのが、会津大学が提供している『Aizu Online Judge』です。
日本語の問題も多数ありますし、何よりほかの人の回答があるので、効率的なコードを参考にできるのがよいです。
また、新しい言語を勉強するときにも、パズルをとくような感覚で勉強していけるのですごくいい練習になると思います!

Read More

アルゴリズムの勉強: 幅優先探索[Ruby/Python][AOJ 0129]

プログラミングの基礎固めと、Pythonの勉強を兼ねてアルゴリズムを勉強中です。今回は『幅優先探索』を勉強しました。AIZU Online Judgeで対応している問題は、『Seven Puzzle』です。基礎的なアルゴリズムのはずですが、ちゃんと組み込むのにかなり苦労しました。また複数言語を勉強しているおかげで、より効率的な組み方をいろんな言語で考えられるのは楽しいですね^^

Read More

「考える技術・書く技術ワークブック上」読みました![書評]

考える技術・書く技術ワークブック上」を読んだので特に勉強になった点を中心にメモです。この本は「考える技術・書く技術」を身につけるために、

  • ピラミット構造が「考えを組み立てる」と「読み手にわかりやすくする」のに役立つ理由
  • 縦の関係性をどのように用いれば自分の考えを明らかにできるのか?
  • 横の関係性をどのように用いれば自分の考えを明らかにできるのか?
  • 導入部をどのように用いれば、フォーカスの定まったアピール度の高い文章にできるか?

を紹介している書籍です。

Read More