Задан линейный массив. Осуществить в нем сдвиги по следующему правилу: циклически сдвинуть на с элементов влево. Число с вводится — C#(Си шарп)

Вариант 1

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

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();

}

Leave a Comment