不带数组的Ruby排序代码示例说明
我对ruby不熟悉。我正在做一项作业,没有解释给出的例子。有人能解释一下这种排序代码是如何工作的吗?它需要3个输入并按字母顺序排序,但我不明白它是如何做到这一点的不带数组的Ruby排序代码示例说明,ruby,sorting,Ruby,Sorting,我对ruby不熟悉。我正在做一项作业,没有解释给出的例子。有人能解释一下这种排序代码是如何工作的吗?它需要3个输入并按字母顺序排序,但我不明白它是如何做到这一点的 # sort n1, n2 = n2, n1 if n1 > n2 n1, n3 = n3, n1 if n1 > n3 n2, n3 = n3, n2 if n2 > n3 n1,n2=n2,n1正在使用并行赋值来交换存储在n1和n2中的值。只有当n1>n2时才执行。这样,在第一行之后,n1值将小于n2值 第二
# sort
n1, n2 = n2, n1 if n1 > n2
n1, n3 = n3, n1 if n1 > n3
n2, n3 = n3, n2 if n2 > n3
n1,n2=n2,n1
正在使用并行赋值来交换存储在n1
和n2
中的值。只有当n1>n2时才执行。这样,在第一行之后,n1
值将小于n2
值
第二行也会发生同样的情况,即交换n1
和n3
的值,以确保n1
中的值最小
第三行中的n1
是现在的最小值。您必须对n2
和n3
进行排序,因此您再次进行交换,以使n2
小于n3
排序方法应返回[n1,n2,n3]
n1,n2=n2,n1
正在使用并行赋值来交换存储在n1
和n2
中的值。只有当n1>n2
时才执行。这样,在第一行之后,n1
值将小于n2
值
第二行也会发生同样的情况,即交换n1
和n3
的值,以确保n1
中的值最小
第三行中的n1
是现在的最小值。您必须对n2
和n3
进行排序,因此您再次进行交换,以使n2
小于n3
您的排序方法应该返回[n1,n2,n3]
为了可读性,我将if
从尾随形式重写为块形式,因为尾随if
条件颠倒了我们读取行的方式,使我们在第一次遇到它们时更难理解。加上并行赋值,一开始可能会让人困惑
思考这些:
n1 = 1
n2 = 2
n3 = 3
[n1, n2, n3] # => [1, 2, 3]
if n1 > n2 # => false
n1, n2 = n2, n1 # =>
end
if n1 > n3 # => false
n1, n3 = n3, n1 # =>
end
if n2 > n3 # => false
n2, n3 = n3, n2 # =>
end
[n1, n2, n3] # => [1, 2, 3]
在了解值的排序顺序是基于值的类型之前,比较值可能会令人困惑。字符通常按ASCII的顺序排序。。。除非您使用的是IBM大型机上的EBCDIC,但希望您不是
Ruby有一些工具,可以更容易地可视化正在发生的事情。我碰巧正在使用“.”我将if
从尾随形式重写为块形式,以便于可读性,因为尾随if
条件颠倒了我们读取行的方式,使我们在第一次遇到它们时更难理解。加上并行赋值,一开始可能会让人困惑
思考这些:
n1 = 1
n2 = 2
n3 = 3
[n1, n2, n3] # => [1, 2, 3]
if n1 > n2 # => false
n1, n2 = n2, n1 # =>
end
if n1 > n3 # => false
n1, n3 = n3, n1 # =>
end
if n2 > n3 # => false
n2, n3 = n3, n2 # =>
end
[n1, n2, n3] # => [1, 2, 3]
在了解值的排序顺序是基于值的类型之前,比较值可能会令人困惑。字符通常按ASCII的顺序排序。。。除非您使用的是IBM大型机上的EBCDIC,但希望您不是
Ruby有一些工具,可以更容易地可视化正在发生的事情。我碰巧正在使用“.”它不是按字母顺序排序,而是按值排序,从最小值到最大值。如果你输入字符,它会按字母顺序排序,输入数字,然后按它们的值排序;看我下面的例子。它不是按字母顺序排序,而是按值排序,从最小到最大。如果你输入字符,它会按字母顺序排序,输入数字,然后按它们的值排序;见下面我的例子。
n1, n2, n3 = 3, 1, 2
n1, n2 = n2, n1 if n1 > n2 # => [1, 3]
n1, n3 = n3, n1 if n1 > n3 # => nil
n2, n3 = n3, n2 if n2 > n3 # => [2, 3]
[n1, n2, n3] # => [1, 2, 3]
n1, n2, n3 = 3, 2, 1
n1, n2 = n2, n1 if n1 > n2 # => [2, 3]
n1, n3 = n3, n1 if n1 > n3 # => [1, 2]
n2, n3 = n3, n2 if n2 > n3 # => [2, 3]
[n1, n2, n3] # => [1, 2, 3]
n1, n2, n3 = %w[c b a]
n1, n2 = n2, n1 if n1 > n2 # => ["b", "c"]
n1, n3 = n3, n1 if n1 > n3 # => ["a", "b"]
n2, n3 = n3, n2 if n2 > n3 # => ["b", "c"]
[n1, n2, n3] # => ["a", "b", "c"]
n1, n2, n3 = %w[b A 1]
n1, n2 = n2, n1 if n1 > n2 # => ["A", "b"]
n1, n3 = n3, n1 if n1 > n3 # => ["1", "A"]
n2, n3 = n3, n2 if n2 > n3 # => ["A", "b"]
[n1, n2, n3] # => ["1", "A", "b"]
n1, n2, n3 = %w[b 02 1]
n1, n2 = n2, n1 if n1 > n2 # => ["02", "b"]
n1, n3 = n3, n1 if n1 > n3 # => nil
n2, n3 = n3, n2 if n2 > n3 # => ["1", "b"]
[n1, n2, n3] # => ["02", "1", "b"]
n1, n2, n3 = %w[3 2 1]
n1, n2 = n2, n1 if n1 > n2 # => ["2", "3"]
n1, n3 = n3, n1 if n1 > n3 # => ["1", "2"]
n2, n3 = n3, n2 if n2 > n3 # => ["2", "3"]
[n1, n2, n3] # => ["1", "2", "3"]