In message <199910150248.LAA16166 / hoyogw.netlab.co.jp> wakou / fsinet.or.jp writes: > やり直してみると、わたなべさんのご心配通り、[]<=>[] が遅くなり、 > Schwartzian Transform が最も高速となりました。という事で、[]<=>[] より > も見やすいとも思いますし、マニュアルの sort の所に Schwartzian > Transform を載せ、これを推奨とするとか、あるいは以前 Hash の時に、わた > なべさんが書かれたような Keysort のようなモジュールを用意という手もあ > りますね。 ところで,`Scwartzian Transform' の本質というのは, あるデータセット S に対し,各要素とそれを処理する基準となるデータ との組からなるデータセット K*S を生成し,K*S の上で処理を行った後 で目的のデータセット S' を得ること で良いのでしょうか. # 中途半端に厳密性を求めた記述 (^^; たとえば sort を例にすると,整数値を表す文字列の配列 ["10", "1", "2"] から整数としての値と文字列の組の配列 [[10, "10"], [1, "1"], [2, "2"]] をつくり,これをキーである整数値でソートした結果 [[1, "1"], [2, "2"], [10, "10"]] から数値順の文字列の配列 ["1", "2", "10"] を得る. # ruby だと `["10", "1", "2"].filter {|e| [e.to_i, e]}.sort.filter {|e| e[1]} # ですんでしまう. 利点はキーデータ生成の計算量が O(N) になること.たとえば sort の例の場 合,比較毎にキーを作っていると,最良でも計算量は O(NlogN) になる. # sort 以外の有意義な利用例って,なにかあるかな? たまに定義を確認しないと不安になるもので.よく変な理解をして後で困る (^^; -- 柳川和久 @ 東大阪市 . 大阪府 October 15, 1999 「変なことを考えるのにも限界があると思わない?」 「なんで変なことを書く必要がある」「小説が現実に負けてどうするのよ !」