Ruby组合比较运算符排序

Ruby组合比较运算符排序,ruby,sorting,operator-keyword,Ruby,Sorting,Operator Keyword,下面的代码按升序对数组进行排序 my_array = [2, 3, 1, 5, 4] my_array.sort! { |n1, n2| n1 <=> n2 } my_数组=[2,3,1,5,4] 我的数组。排序!{| n1,n2 | n1 n2} 我了解到,如果第一个对象小于第二个对象,则操作符返回-1,如果第一个对象等于第二个对象,则返回0,如果第一个对象大于第二个对象,则返回1 这些信息如何导致对列表进行排序?我想知道给定的代码是如何工作的 如果我们交换操作符周围的项,数组

下面的代码按升序对数组进行排序

my_array = [2, 3, 1, 5, 4]
my_array.sort! { |n1, n2| n1 <=> n2 }
my_数组=[2,3,1,5,4]
我的数组。排序!{| n1,n2 | n1 n2}
我了解到,如果第一个对象小于第二个对象,则
操作符返回
-1
,如果第一个对象等于第二个对象,则返回
0
,如果第一个对象大于第二个对象,则返回
1

这些信息如何导致对列表进行排序?我想知道给定的代码是如何工作的


如果我们交换
操作符周围的项,数组将按降序排序。但是怎么做呢?

有很多(ruby使用),但是它们都有一个验收测试:对于数组
a
a[n]中的每个元素
a[n]看看所有的不同,您将开始理解如何使用两个元素的比较来实现元素列表的排序算法


这些可能有助于更好地理解算法之间的差异。

排序是根据使用数组的每对元素计算的块的值来完成的。如果在块中有一个
语句,则该值将是
-1
0
,或者您知道的
1
。在某些类上定义了一个自然排序顺序。对于数字,它们遵循传统数学意义上的不等式顺序,即
-1
位于
0
之前,也就是
1
之前。您可以参考文档和来源:!这对我没有帮助。所以你应该更好地解释你不理解的地方。我不理解排序函数使用的机制,即使用比较运算符返回的值按升序对函数进行排序。@user3544994,请想想如何使用数组中的两个不同元素进行操作。是的,你可以在这里使用“嗨,我知道如果排序函数知道“”的结果,它可以对数组进行排序,但我的问题是它是如何做到的,这样我就可以理解为什么交换对象会导致数组按降序排序。你想知道排序算法是如何工作的吗?正如我在回答中所说,ruby使用quicksort()。还有一些更简单的算法,如插入排序()或选择排序()……我不是在问排序算法是如何工作的。我在问为什么我们需要一个外观奇特的“”,它返回奇怪的1、0和-1。Ruby制造商不能通过使用“@user3544994”来简化事情吗?他们试图对
操作符给出具体的解释。希望这能有所帮助