Как сделать сдвиг в массиве на определённое количество клеток? Язык Си.
Задача:
дан массив
1,2,3,4,5,6,7,8,9,10
сдвиг допустим на три клетки влево
4,5,6,7,8,9,10,1,2,3
сдвиг на три клетки вправо
8,9,10,1,2,3,4,5,6,7
По дате
По рейтингу
http://codelab.ru/task/cycle_shift/
/* Сдвигаем массив x[0..n] * на rotdist позиций влево
*/
/* gcd - наибольший общий делитель
* между n и rotdist
*/
for i = 0 to gcd
t = x
j = i
while
k = j + rotdist
if k >= n
k -= n
if k == i
break
x[j] = x[k]
j = k
x[j] = t
на C сами переведёте.
там есть ещё 2 алгоритма.
Если нет ограничений на использование памяти, то заводим новый массив той же длины
и копируем в него старый со смещением. Алгоритм тривиальный.
Видео по теме