在下面,结果是相同的:
[3, 5].sort{|a, b| b <=> a}
[5, 3].sort{|a, b| b <=> a}
我想知道内部发生了什么以及它取决于输入数组。
答案 0 :(得分:3)
第一行:
[3, 5].sort { |a, b| b <=> a }
使用a = 3
和b = 5
调用该块。它返回5 <=> 3
的结果1
。大于0
的整数告诉sort
a
跟随b
。因此结果为[5, 3]
。
第二行:
[5, 3].sort { |a, b| b <=> a }
使用a = 5
和b = 3
调用该块。它返回3 <=> 5
的结果-1
。小于0
的整数告诉sort
b
跟随a
。因此,结果(再次)[5, 3]
。
答案 1 :(得分:1)
因为您正在对数组进行排序,并且更改数组的元素顺序不会更改排序结果。
毕竟这是排序的全部要点 - 尽管初始数组排序,但已排序结果。
要更改结果,您需要更改排序规则,而不是数组。
答案 2 :(得分:1)
无论输入顺序如何,输出都是相同的,因为您对数组进行了排序。
如果你想用相反的顺序排序写
[3,5].sort{|a,b| a <=> b}