jruby sort函数与cruby sort函数的区别

1.实现算法不一样,jruby sort函数的排序算法采用的是插入排序而cruby则是快速排序
2.参数block的区别(最主要区别):
  sort {|x,y| <表达式>}
  第一区别:x,y的赋值不一样,cruby中,x,y的值是按照下标序列赋值,而jruby中,按照下标序列相反顺序赋值
  第二区别:根据<表达式>返回的值进行的操作不同:
            cruby下,当<表达式>返回的值不等于-1时进行序列位置调整;(不稳定排序)
            jruby下,当<表达式>返回的值不等于1时进行序列位置调整。

test.rb
arr = [11,2,34,1,5].sort do |x,y| 
  p "x = " + x.to_s + "  " +"y = " +y.to_s
  x==2?1:x<=>y
end
p arr


C:\Documents and Settings\someone\桌面>jruby test.rb
JRuby limited openssl loaded. http://jruby.org/openssl
gem install jruby-openssl for full support.
"x = 2  y = 11"
"x = 34  y = 2"
"x = 1  y = 34"
"x = 1  y = 2"
"x = 1  y = 11"
"x = 5  y = 34"
"x = 5  y = 2"
[1, 11, 2, 5, 34]

C:\Documents and Settings\someone\桌面>ruby test.rb
"x = 11  y = 34"
"x = 34  y = 5"
"x = 11  y = 5"
"x = 2  y = 11"
"x = 1  y = 11"
"x = 2  y = 34"
"x = 5  y = 1"
[1, 5, 11, 34, 2]


可以使用sort!函数来查看排序过程。

你可能感兴趣的:(C++,c,算法,Ruby,jruby)