2016-09-18

クイックソート

技術的な話をすると食いつく人が多いはてな界隈

だけどそんな高尚な話じゃない。

10年以上前職場で、たまたまスプレッドシート上に示されたなんかの値を整列させないと上手くいかない事があって、マクロを組まざるを得なくなり、ちょこちょこっと勉強してみてソートアルゴリズムなるものがあることを知った。

それ以来プログラムなんか書いた事はなかったのだけど、またしても書かざるを得なくなった。

「その振込み用データって名前あいうえお順にならない?」って頼まれて「簡単に出来るよー」と安請負たからだ。

最初エクセル上で普通に整列させれば良いと思ってたんだが、表形式上データの取扱いに難点があり、エクセル操作だけでは出来ない、あるいはかなりややっこしい事が判明した。

そこで、昔取った杵柄、マクロ書いてやろうかと。

クイックソート使わなくともバブルでも全然問題なかったんだけど、何故かクイックソートに拘った。

しかし、そのクイックソートアルゴリズムが思い出せない・・・

こんなことここに書いたらバカにされるのは分かりきってて書いてるんだけどね。

ググれば済む話なんだけど、歳食って頑固になってきたからか、意地でも思い出そうとノート数字書いて並べたりして考えて。

・・・よくよく思い出すと、10年前の当時、そもそもクイックソートアルゴリズムをそんなに知らずにただただソースコード拝借しただけだった事を思い出した。

でも、なんとなく、なんか左右に入れ替え続ける図みたいなのがあったなぁってのと、再帰アルゴリズムってーのを使うというところを思い出して、1時間くらい掛けて独自クイックソートをするコードを書き終えた。

テストして、勘違いなどのバグを直し、整列に問題ない事を確認

我ながらやるじゃん!・・・と思ったのも束の間、付随するほかのデータを同じ順に並べなおさないといけないことに気付く。

てことは、元の配列の添字を別の配列に入れて、ソートするときに一緒に入れ替えて元の順序を保存するようにすれば良い?・・・と思ってやってみたがこれが上手くいかない。

結局、ほんの些細な勘違いをしてたことに気付くまでに2時間も掛かり、頼まれから計3時間後、「簡単に出来るよー」と豪語してしまった相手を呆れさせてしまった。しかもその間他の仕事放ったらかし。

最近ホント無駄に歳食ったなぁと思う。このままではボケるの早いだろうな・・・

  • 昔読んだ入門書ではさっぱり理解できんかった。クイックソート。 Cで100行以上で書いてあるのな。 その後、ネットでRubyで10行くらいで書いてあって、それみたら「そういうことだった...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん