【发布时间】:2018-02-25 03:54:21
【问题描述】:
我有一些将数字数组向左旋转的代码,但我需要它来将其向右旋转。网上还有其他代码可以将数组向右旋转,但该代码只允许您旋转数组中间的数字。
我尝试以不同的方式减少循环并更改其初始化位置,但似乎没有以正确的方式旋转。
预期输出:如果数组是 {1, 2, 3, 4, 5, 6, 7}。那么它应该看起来像:{7, 1, 2, 3, 4, 5, 6}
当前输出:{2, 3, 4, 5, 6, 7, 1}
#include <iostream>
using namespace std;
/*Function to left Rotate arr[] of size n by 1*/
void leftRotatebyOne(int arr[], int n);
/*Function to left rotate arr[] of size n by d*/
void leftRotate(int arr[], int d, int n)
{
int i;
for (i = 0; i < d; i++)
leftRotatebyOne(arr, n);
}
void leftRotatebyOne(int arr[], int n)
{
int i, temp;
temp = arr[0];
for (i = 0; i < n-1; i++)
arr[i] = arr[i+1];
arr[i] = temp;
}
/* utility function to print an array */
void printArray(int arr[], int size)
{
int i;
for(i = 0; i < size; i++)
cout << arr[i] << " ";
}
/* Driver program to test above functions */
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7};
printArray(arr, 7);
leftRotate(arr, 1, 7);
cout << "___" << endl;
printArray(arr, 7);
getchar();
return 0;
}
【问题讨论】:
-
从您的问题中不清楚您提供的代码是您的工作向左旋转代码(在这种情况下,它几乎没有相关性),还是您没有工作的向右旋转尝试'懒得改名。您还可以准确解释您的尝试出了什么问题:它从输入中产生什么输出,您期望什么,以及您不了解如何从一个到另一个。
-
您是否排除只使用
std::rotate?
标签: c++ arrays loops sorting rotation