何を選ぶべきか

報道によると、サムおじさんトコにカトリーナが来て大暴れしたそうだ。被災地では略奪が横行するなど無法地帯と化してるらしく、日本ではたぶんそんなコトありえないからとってもびっくりだった。考えてみれば、サムおじさんってのはネイティブアメリカンから土地を略奪してきた過去があるワケだから、これくらいあたりまえなのかもしれない。
さっきやってたテレビのニュースでは、おもしろいコトに店から商品を勝手に持ち出してたのはほとんど黒人だった気がする。あの国って、悪役はいつも黒人にやらせるから、もしかしたら意図的にそういう映像を集めたのかもしれない。生き抜くには盗むしかない、っていうような貧困層に黒人が多かったからかもしれないケド、どっちにしろ問題があるコトにかわりはないワケで。
そんな修羅場と化した被災地を、明日あたり子ザル…じゃなくて子ブッシュが視察するらしいが、あのバカだったら「これはテロみたいだ!」とか言いそうだ。もしこれがテロだとしたら、主犯は環境破壊しまくってるサムおじさんだ。
さて。ぜんぜん話がつながらないケド、ココからは整列(ソート)のおはなしを書きたい。ソートってのは、情報の集まりを特定の順序で並び替えるコトなんだと思う。 [ 'い', 'ろ', 'は', 'に', 'ほ', 'へ', 'と' ] のような「ひらがな1文字」の集まりを「50音順」という順序で並び替える、なんてのもソートの一例なんだろう。
ソートするモノなんてのは別に文字とか数値とかである必要はなく、順序付けできるのであれば何でもいい。「住所、氏名、生年月日、性別の4つの情報から構成される構造体」なんてのも、「まず氏名で50音順にして、同名だったら生年月日で早く生まれた順にする」などの順序付けする手段さえあればいいのだ。
(順序付けする方法ではなく)ソートする方法にもいろいろあって、その中でも「クイックソート」という方法が平均的に速いとされている。「平均的に速い」というコトはやっぱり例外もあって、ソートするモノが少なかったり、「だいたいソートしてある(ソート済みの名簿の最後に1人分の情報を追加したときとか)のを完全にソートする」なんて場合は遅かったりする。だから、こういった苦手な状態にはできるだけならないように小細工したり、あきらめて別の方法をとったりする。
そのほかにも、「ソートするモノはどのようなデータ構造で保持しているのか(配列、線形リスト、…)」、「ソートするモノはどこにあるのか(メモリ、ディスク、テープ、…)」、「ソート中の一時領域として、メモリはどれくらい使っていいのか」などのさまざまな条件によって、どの方法が最適かが変わってくる…とは言いつつ、たいていは標準ライブラリが提供してるのを使えば十分だったりする。
長かったケド、ココからが本題。たぶん多くの人が使ったコトがある某システムのおはなし。このシステムをバージョンアップするときに莫大な数の情報をソートする必要があるんだけど、その方法を調べてみると「挿入ソート」というやつだったのだ。この方法ではソートするモノが多くなるとものすごく遅くなっちゃって、バージョンアップにかかる時間の半分以上を費やしていた。これをクイックソートに変えた場合について単純計算してみたら、数十分かかっていたのが数秒程度で終わるコトが判明。試験の時間が十分になかったので変更は見送りとなったケド、みんなにとってはいい教訓となった。
選択を間違えるとひどい結果になるのは選挙でも同じで、環境問題や国内の問題と大儀のないイラク侵略の順序付けがおかしいヤツを大統領にした結果、どれもうまくいかず大変なコトになっている国もある。いまの日本には、郵政民営化よりも優先してやらないといけないコトなんてたくさんあるワケで、その後の大改悪をさせないためにも、独裁者コイズミと創価学会には票を入れないでほしいな、と思う。そんな感じで今回も無理矢理つなげてみたのだ。