1.实现算法不一样,jruby sort函数的排序算法采用的是插入排序而cruby则是快速排序
2.参数block的区别(最主要区别):
sort {|x,y| <表达式>}
第一区别:x,y的赋值不一样,cruby中,x,y的值是按照下标序列赋值,而jruby中,按照下标序列相反顺序赋值
第二区别:根据<表达式>返回的值进行的操作不同:
cruby下,当<表达式>返回的值不等于-1时进行序列位置调整;(不稳定排序)
jruby下,当<表达式>返回的值不等于1时进行序列位置调整。
test.rb
可以使用sort!函数来查看排序过程。
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!函数来查看排序过程。
本文对比了JRUBY与CRUBY中sort函数的不同之处,包括排序算法的选择、block参数处理方式及其对排序稳定性的影响。

2025

被折叠的 条评论
为什么被折叠?



