[Golang]アルゴリズム学習を学習しよう ~配列のSort~

こんにちは。KOUKIです。

とあるWeb系企業でGoエンジニアをしています。

Golangでアルゴリズムの学習をしましょう!

今回は、2つの配列を比較して、小さい順に並べ替えた配列を返却するプログラムを書いてみたいと思います。

課題

次の配列(スライスとも呼ぶ)を用意します。

この配列は、小さい数値 -> 大きい数値の順で値が格納されていることをただ一つのルールとしています。一つの配列内のソートであれば、golangのsortパッケージで順番をいじれるので、配列内の数値の並び替えは割愛しました。

2つの配列を比較して、小さい値の順番にソートした一つの配列を戻り値として返すプログラムを実装しましょう。

回答

実装方法はいくつかあると思いますが、私は以下のように実装しました。

  • 配列1と配列2の大きさをチェックする
  • 大きい配列(b)から小さい配列(s)をチェックする
  • bの値がsの値より小さい場合は、bの値を格納。sの値を一時変数に保存。
  • bとsの値が同じである場合はbの値を格納(sでもよい)
  • bの値がsの値より大きい場合はsの値を格納し、s, bの値を一時保存変数に格納する。sはmap型。
  • sの値を格納した一時保存用の値は既に配列に格納済みなのでmapに値があればスキップする
  • 一時保存したbとsの値をチェックし、大きい数値を保存。

OKですね。一応動きましたが、もっといいアルゴリズムがあると思いますので、皆様もぜひチャレンジしてみてください^^

まとめ

アルゴリズムを考えると頭の体操になります。近頃のWeb開発はフレームワークの力で、アルゴリズムを考えなくても実装できてしまいます。

しかし、毎日15分ずつでいいので、自分でアルゴリズムを考える習慣を持つとよりHappyなエンジニアライフを送れると思います。

それでは、また!

Go記事まとめ

アルゴリズム

Go記事まとめです

ソースコード

コメントを残す