Можно ли «застегнуть» массив без использования 2-х подмассивов? Обычно результат проносясь 2 массивов будет выглядеть примерно такzip массив без создания подмассивов
a1 = [1,2,3]
a2 = [4,5,6]
a3 = zip(a1, a2)
a3 == [1,4,2,5,3,6]
Однако, у меня нет 2 подмассива и все, что я даюсь это вход (позволяет сказать, что создание массивов не способность в данный момент) , и я хочу закрепить массив на месте. например
a1 = [1,2,3,4,5,6]
zip(a1)
a1 == [1,4,2,5,3,6]
Мой текущий алгоритм не делает это правильно (это приводит к последовательности, где первая половина его сжатой правильно, но вторая половина промелькнула в обратном направлении)
array = [1,2,3,4,5,6,7,8]
a = array[0]
b = array[1]
i = 0, j = array.length/2
while (i + 2 < j)
array[i] = a
array[i + 1] = b
swap(array, i + 1, i + 2)
swap(array, i + 1, j)
i += 2, j += 1
a = b
b = array[i + 1]
array == [1,5,2,6,4,8,3,7]
Полных ответов Арен» t необходимо - руководство в общем направлении является предпочтительным.
отлично! Я бы предпочел не программировать решение, но это не работает. К сожалению, у меня нет ответа, чтобы поддержать свой ответ. – Antiokus
Я бы хотел увидеть оптимизированное решение. :-) – jvdm