数组---旋转数组
程序员文章站
2022-04-04 08:30:44
...
问题描述:
给定数组A和下标k,输出旋转后的数组。
例子:给定[1,2,3,6,7,8] 3
输出:[6,7,8,1,2,3]
解题思路:
首先将整个数组旋转,然后分别旋转两个数组的部分。
源码:
#include <iostream>
using namespace std;
void reverse(int * A, int bg, int ed)
{
while (bg < ed)
{
std::swap(A[bg], A[ed]);
++bg;
--ed;
}
}
void rotate(int * A, int n,int k)
{
k = n - k;
reverse(A, 0, n - 1);
reverse(A, 0, k - 1);
reverse(A, k, n - 1);
}
int main()
{
int A[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
rotate(A, 8, 4);
for (auto x : A)
cout << x << endl;
return 0;
}
运行结果:
上一篇: 数组-旋转数组
下一篇: 漫画:“旋转数组”中的二分查找