Ruby排序子数组就位

Ruby排序子数组就位,ruby,list,sorting,in-place,Ruby,List,Sorting,In Place,如果我在Ruby,foo中有一个数组,那么排序foo[I..j]如何到位 我试着调用foo[I..j].sort但它没有对原始数组进行排序,只是返回了已排序的数组部分 如果要对数组的一部分进行排序,则需要重新注入已排序的部分。就地修饰符在这里对您没有帮助,因为foo[i..j]返回一个副本。您正在对副本进行就地排序,这对原始数组实际上没有任何意义 因此,将原始切片替换为相同的排序版本: test = %w[ z b f d c h k z ] test[2..6] = test[2..6].s

如果我在Ruby,foo中有一个数组,那么排序
foo[I..j]
如何到位

我试着调用
foo[I..j].sort
但它没有对原始数组进行排序,只是返回了已排序的数组部分

如果要对数组的一部分进行排序,则需要重新注入已排序的部分。就地修饰符在这里对您没有帮助,因为
foo[i..j]
返回一个副本。您正在对副本进行就地排序,这对原始数组实际上没有任何意义

因此,将原始切片替换为相同的排序版本:

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"]

列表你是什么意思?请仔细检查你的结果:
foo=[3,1,2]
foo.sort!#=>[1,2,3]
foo#=>[1,2,3]
,您所说的“子列表”是什么意思?顺便说一句,让句子中的代码脱颖而出(如本评论中所述),并在其周围加上背景标记。最好给出一个实际的例子(而不是
[i..j]
)。您可以将数组的该段重新分配给已排序的版本(
foo[i..j]=foo[i..j]。按列表排序我指的是数组,很抱歉造成混淆。当我说sublist时,我指的是arrayOkay的一部分(由开始索引I和结束索引j定义),我正在这样做。所以没有简单的方法对子列表进行排序?我是说,像foo.sort这样的东西!(startIndex,endIndex)没有,但是如果您想修补
数组,您可以选择一种新方法,如果这是您在代码中经常要做的事情。