ruby 数组中的 sort方法 arr.sort{|a,b| a<=>b}
ruby吧
全部回复
仅看楼主
level 1
1033154134 楼主
arr = [5,1,10,6,3,1,2]
arr.sort{|a,b| a<=>b }
有点疑问就是 <=>这个符号,看到手册说,a比b小为 -1 相等为0 大于为1
这数组类的sort方法始终都是根据-1 0 1从小到大排序的?
而a和b,就相当于 如循环第一次时候,则是 arr数组中的 5和1?他是这样比较的吗?
2017年02月07日 02点02分 1
level 1
1033154134 楼主
如果需要倒序 则把块中的{|a,b| b<=>a }掉转过来
2017年02月07日 02点02分 2
level 2
不是你说的那样比较的
源码在 enum.sort_by
看源码应该是折半排序
2019年01月30日 07点01分 3
level 1
a 和 b 在数组里的位置你不用关心,这是 ruby 内部筛选完给你的,你只要提供比较的结果就行。
2019年10月08日 07点10分 4
1