从不同的订单

时间:2017-05-10 10:38:13

标签: arrays ruby sorting

在下面,结果是相同的:

[3, 5].sort{|a, b| b <=> a}
[5, 3].sort{|a, b| b <=> a}

我想知道内部发生了什么以及它取决于输入数组。

3 个答案:

答案 0 :(得分:3)

第一行:

[3, 5].sort { |a, b| b <=> a }

使用a = 3b = 5调用该块。它返回5 <=> 3的结果1。大于0的整数告诉sort a跟随b。因此结果为[5, 3]

第二行:

[5, 3].sort { |a, b| b <=> a }

使用a = 5b = 3调用该块。它返回3 <=> 5的结果-1。小于0的整数告诉sort b跟随a。因此,结果(再次)[5, 3]

答案 1 :(得分:1)

因为您正在对数组进行排序,并且更改数组的元素顺序不会更改排序结果。

毕竟这是排序的全部要点 - 尽管初始数组排序,但已排序结果。

要更改结果,您需要更改排序规则,而不是数组。

答案 2 :(得分:1)

无论输入顺序如何,输出都是相同的,因为您对数组进行了排序。

如果你想用相反的顺序排序写

[3,5].sort{|a,b| a <=> b}