From: Patrick Gundlach Date: 2005-12-13T20:12:39+09:00 Subject: stable sort_by? Hi, I have to sort a list using a number of criterions (a,b,c,d) where d is the least important criterion and a is the most important one. All comparisons should be 'higher number: better position'. This is what I have tried: -------------------------------------------------- require 'pp' h= {"Team A"=>{:a=>3, :b=>2, :c=>6, :d=>114 }, "Team B"=>{:a=>0, :b=>-2, :c=>4, :d=>112 }, "Team C"=>{:a=>3, :b=>4, :c=>4, :d=>110 }, "Team D"=>{:a=>3, :b=>4, :c=>4, :d=>108 }, } tmp=h.to_a [:d,:c,:b,:a].each do |criterion| tmp=tmp.sort_by { |a| a[1][criterion] }.reverse end pp tmp -------------------------------------------------- [["Team D", {:d=>108, :a=>3, :b=>4, :c=>4}], ["Team C", {:d=>110, :a=>3, :b=>4, :c=>4}], ["Team A", {:d=>114, :a=>3, :b=>2, :c=>6}], ["Team B", {:d=>112, :a=>0, :b=>-2, :c=>4}]] but as far as I can see 'Team C' should be better than 'Team D', because of criterion d. Is it possible that sort_by is not stable? Or is there something I did wrong? Patrick