Вариант 1
1 2 3 4 5 6 7 8 9 10 11 | static void Rotate(Array array, int c) { if (c < 0) throw new ArgumentException(nameof(c)); int n = array.Length; c %= n; Array.Reverse(array); Array.Reverse(array, 0, n - c); Array.Reverse(array, n - c, c); } |
Вариант 2
1 2 3 4 5 6 7 8 9 10 11 | static void Rotate(Array array, int c) { if (c < 0) throw new ArgumentException(nameof(c)); int n = array.Length; c %= n; array = array.Skip(n-c).Concat(array.Take(n - c)).ToArray(); } |