Perlで色々なアルゴリズムを実装してみた
ちょいちょい参加している AtCoder で、二分探索のアルゴリズムを時間内に実装する自身がなかったので、基本的なアルゴリズムを手を動かした実装してみました。
まぁ、ソートやサーチなんかは、大体の言語でメソッドや組み込み関数が定義されているので実務で使うことは無いと思いますが、実際にどういう動きをするかを頭で考えてコードで表現する訓練は大事だなぁと思って色々書いてみました。
アルゴリズムについては色々書籍が販売されていますが、手頃な感じの本を入手して最初の問題からコードを書いてみました。普遍的な知識ですね。
図解入門よくわかるアルゴリズムの基本と仕組み (How‐nual Visual Guide Book)
- 作者: 杉浦賢
- 出版社/メーカー: 秀和システム
- 発売日: 2002/02/26
- メディア: 単行本
- 購入: 1人 クリック: 36回
- この商品を含むブログ (6件) を見る
それぞれのコードは、どんな動きをするのかの趣旨だけ読んで自分なりにコーディングしてみたので、コードにツッコミやアドバイス等々あればお手柔らかにお願いします(笑)。
まずは第7章までの基本編。
値の集合から、条件にあった値を取り出すコード(第4章)
合計
数を数える
平均
最大値
最小値
まぁ、この辺りは基本編ですね。プログラミングの初心者の方は、このあたりからコードを書いてちゃんと動くか試してみると良いと思います。Perl入学式の復習にもどうぞ。
順番をソートするアルゴリズムの実装(第6章)
選択ソート
挿入ソート
ちょっとアルゴリズムっぽくなってきました。シェルソートはグループ分けをどう実装するか、頭の中だけで考えるだけでは混乱したので、実際に動きをノートに書き出して実装しました。
頭で考えて書いたコードは思うような結果になりませんでしたが、ノートに書いて整理するとあっさりと書けました。いきなり書かずにまず整理。
どんな言語でも通用する基本って大事。
値の集合から特定の値を探索するアルゴリズムの実装(第7章)
線形探索
二分探索(当たり入り)
二分探索(当たりなし)
文字列の照合
アルゴリズムの実装、頭の体操的にも面白いですね。引き続き第8章以降もやっていきたいと思います。