2017-01-11 3 views
-1

У меня есть упражнение, которое дает вам входной массив и вы хотите, чтобы вы переместили все элементы вправо один раз.Элементы сдвига вправо в массиве

Input   |  Output 
1 2 3 4  |  4 1 2 3 

Как я могу это сделать? Код не требуется, просто алгоритма будет достаточно.
Единственное, что я пытался (n является длиной массива)

for (int i = 0; i <n/2; ++i) 
    { 
     swap(ar[i],ar[i+1]); 
    } 
+0

@kraskevich Я отредактировал свой вопрос и добавил, что я пробовал – user7387102

+0

Где находится 'n/2' в вашем коде? Идея поменять соседние элементы в некотором порядке верна. – kraskevich

+0

@beaker Я пытался это сделать, он работал не – user7387102

ответ

0

Идея замены смежных элементов является правильной. Вам нужно пройти через все, а не в первую половину. Что-то вроде:

for i = n - 2 downto 0 
    swap(a[i], a[i + 1]) 

будет работать.

+0

Вы проверили его перед публикацией? – user7387102

+0

@ user7387102 Я не запускал код. Однако это легко доказать. – kraskevich

+0

ну я и, к сожалению, ответ был другим – user7387102

Смежные вопросы