Рубиновая сортировка подрешетки на месте - PullRequest
0 голосов
/ 02 марта 2019

Если у меня есть массив в Ruby, foo, как можно сортировать foo[i..j] на месте?

Я пытался вызвать foo[i..j].sort!, но исходный массив не сортировался, просто возвращал отсортированную часть.

1 Ответ

0 голосов
/ 02 марта 2019

Если вы хотите отсортировать часть массива, вам нужно повторно внедрить отсортированные части.Модификатор на месте вам здесь не поможет, потому что 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"]
...