だけどそんな高尚な話じゃない。
10年以上前の職場で、たまたまスプレッドシート上に示されたなんかの値を整列させないと上手くいかない事があって、マクロを組まざるを得なくなり、ちょこちょこっと勉強してみてソートアルゴリズムなるものがあることを知った。
それ以来プログラムなんか書いた事はなかったのだけど、またしても書かざるを得なくなった。
「その振込み用データって名前のあいうえお順にならない?」って頼まれて「簡単に出来るよー」と安請負したからだ。
最初はエクセル上で普通に整列させれば良いと思ってたんだが、表形式上のデータの取扱いに難点があり、エクセルの操作だけでは出来ない、あるいはかなりややっこしい事が判明した。
そこで、昔取った杵柄、マクロ書いてやろうかと。
クイックソート使わなくともバブルでも全然問題なかったんだけど、何故かクイックソートに拘った。
しかし、そのクイックソートのアルゴリズムが思い出せない・・・
こんなことここに書いたらバカにされるのは分かりきってて書いてるんだけどね。
ググれば済む話なんだけど、歳食って頑固になってきたからか、意地でも思い出そうとノートに数字書いて並べたりして考えて。
・・・よくよく思い出すと、10年前の当時、そもそもクイックソートのアルゴリズムをそんなに知らずにただただソースコードを拝借しただけだった事を思い出した。
でも、なんとなく、なんか左右に入れ替え続ける図みたいなのがあったなぁってのと、再帰アルゴリズムってーのを使うというところを思い出して、1時間くらい掛けて独自にクイックソートをするコードを書き終えた。
テストして、勘違いなどのバグを直し、整列に問題ない事を確認。
我ながらやるじゃん!・・・と思ったのも束の間、付随するほかのデータを同じ順に並べなおさないといけないことに気付く。
てことは、元の配列の添字を別の配列に入れて、ソートするときに一緒に入れ替えて元の順序を保存するようにすれば良い?・・・と思ってやってみたがこれが上手くいかない。
結局、ほんの些細な勘違いをしてたことに気付くまでに2時間も掛かり、頼まれてから計3時間後、「簡単に出来るよー」と豪語してしまった相手を呆れさせてしまった。しかもその間他の仕事放ったらかし。
昔読んだ入門書ではさっぱり理解できんかった。クイックソート。 Cで100行以上で書いてあるのな。 その後、ネットでRubyで10行くらいで書いてあって、それみたら「そういうことだった...
クイックソートはダンスで覚えたけど、こんなの実装したくないな https://www.youtube.com/watch?v=ywWBy6J5gz8