Int Array Вращение слева от заданного индекса в c # - PullRequest
0 голосов
/ 12 марта 2019

Пример массива: {4, 5, 3, 6, 1} Пользователь введет номер индекса, и массив будет повернут влево от заданного номера индекса. Пример: если пользовательский ввод (порядковый номер) равен 2, результат будет: 3 6 1 4 5.

Есть ли лучший подход?

public static void Main(string[] args)
{          
    int[] a = { 4, 2, 8, 3, 1 };
    int l = a.Length;
    int[] b = new int[l];
    int x = 0;
    x = Convert.ToInt32(Console.ReadLine());
    int i = 0;
    for (int j = x; j < l; j++)
    {

        b[i] = a[j];
        i++;
    }
    for (int k = 0; k < x; k++)
    {
        int v = a[k];
        b[i] = a[k];
        i++;
    }
    for (int m = 0; m < b.Length; m++)
    {
        Console.Write("{0}, ", b[m]);
    }

    Console.ReadKey();
}

1 Ответ

0 голосов
/ 12 марта 2019

Я буду использовать этот метод

public static int[] CircularShiftLeft(int[] arr, int shifts)
{
    var dest = new int[arr.Length];
    Array.Copy(arr, shifts, dest, 0, arr.Length - shifts);
    Array.Copy(arr, 0, dest, arr.Length - shifts, shifts);
    return dest;
}

Использование в вашем коде, я не изменил имя

public static void Main(string[] args)
{
    int[] a = { 4, 2, 8, 3, 1 };

    int x = 0;
    x = Convert.ToInt32(Console.ReadLine());

    var b = ShiftLeft(a, x);

    for (int m = 0; m < b.Length; m++)
    {
        Console.Write("{0}, ", b[m]);
    }

    Console.ReadKey();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...