From: Robert Klemme Date: 2009-06-09T04:25:09+09:00 Subject: Re: How to sort array ascending, except zero ? On 08.06.2009 20:55, brabuhr@gmail.com wrote: > On 6/8/09, Robert Klemme wrote: >> On 08.06.2009 17:07, andrea wrote: >>> irb(main):003:0> a=[0,3,2,-5,0,4] >>> => [0, 3, 2, -5, 0, 4] >>> irb(main):004:0> a.sort{|x,y| x.zero? ? 1 : x<=>y} >>> => [-5, 2, 3, 4, 0, 0] >> irb(main):003:0> a=[1,0] >> => [1, 0] >> irb(main):004:0> a.sort{|x,y| x.zero? ? 1 : x<=>y} >> => [0, 1] >> irb(main):005:0> > > Assuming a stable sorting algorithm, sort twice is an option: > > irb(main):001:0> [1, 0].sort.sort_by{|n| n.zero? ? 1 : 0} > => [1, 0] Sorting twice only to make the block to sort simpler does not sound like a good operation. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/