右旋操作

int main()
{
    int shiftSteps, newposition;
    int numbers[10], numberscopy[10];
    cin >> shiftSteps;

    for (int i = 0; i < 10; i++)
        cin >> numbers[i];

    for (int i = 0; i < 10; i++)
        numberscopy[i] = numbers[i];

    //----------------------------------------

    for (int i = 0; i < 10; i++)
    {
        newposition = (i + shiftSteps) % 10;
        numbers[newposition] = numberscopy[i];
    }

     for (int i = 0; i < 10; i++)
        cout << numbers[i] << "  ";
}

我写了这段代码,用辅助数组“numberscopy”将 10 个数字向右旋转,但我想在没有辅助数组的情况下重写代码,我不知道如何。

回答

您可以就地旋转数组,即不使用带有标准算法std::rotate的辅助数组。

std::rotate(numbers, numbers + shiftSteps, numbers + 10);


以上是右旋操作的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>