Ruby 就地排序子数组
Ruby sort subarray in place
如果我在 Ruby 中有一个数组,foo,如何就地排序 foo[i..j]
?
我尝试调用 foo[i..j].sort!
但它没有对原始数组进行排序,只是返回了其中的排序部分。
如果您想对数组的部分进行排序,您需要重新注入排序的部分。就地修饰符不会在这里帮助你,因为 foo[i..j]
returns 一个副本 。您正在就地对副本进行排序,这对原始数组实际上没有任何意义。
因此,将原始切片替换为相同的排序版本:
test = %w[ z b f d c h k z ]
test[2..6] = test[2..6].sort
# => ["c", "d", "f", "h", "k"]
test
# => ["a", "b", "c", "d", "f", "h", "k", "q"]
如果我在 Ruby 中有一个数组,foo,如何就地排序 foo[i..j]
?
我尝试调用 foo[i..j].sort!
但它没有对原始数组进行排序,只是返回了其中的排序部分。
如果您想对数组的部分进行排序,您需要重新注入排序的部分。就地修饰符不会在这里帮助你,因为 foo[i..j]
returns 一个副本 。您正在就地对副本进行排序,这对原始数组实际上没有任何意义。
因此,将原始切片替换为相同的排序版本:
test = %w[ z b f d c h k z ]
test[2..6] = test[2..6].sort
# => ["c", "d", "f", "h", "k"]
test
# => ["a", "b", "c", "d", "f", "h", "k", "q"]