Финал (надеюсь):
newArr = [].concat(
arr.slice(0,left),
arr.slice(left,right+1).sort(),
arr.slice(right+1,arr.length)
)
взятие right
включительно, предполагая, что левый не больше правого, предполагая, что массив не пуст, et c.
Предыдущее редактирование: Прочитал комментарии. В основном правильно. Проблема, которую я наблюдал, заключалась в том, что запрошенная сортировка выполняется между левым и правым включительно , тогда как первый аргумент slice
равен включительно , а второй аргумент - исключительный .
Я вижу, теперь последняя часть должна быть отрицательной величиной, разницей между левой и длиной массива. Но я не буду пытаться решить эту проблему ...
Мой исходный «ответ»: Я предлагаю вам разделить массив на 3 подмассива, используя slice
, отсортировать середину, а затем снова собрать их, используя concat
, например:
newArr=[].concat(arr.slice(0,left),arr.slice(left,right+1).sort(),arr.slice(left+right-1))
Могу я предложить вам получить больше знакомы с slice
и concat
при поиске в Интернете?