c++将一个数组中的数循环左移,例如:数组中原来的数为:1 2 3 4 5,移动后变成2 3 4 5 1
时间: 2024-03-19 18:46:21 浏览: 74
C语言实现数组的循环左移,右移,翻转的示例
可以通过三次翻转实现将数组循环左移。具体步骤如下:
1. 将整个数组翻转,变成5 4 3 2 1。
2. 将前面k个数翻转,变成4 5 3 2 1。
3. 将后面n-k个数翻转,变成4 5 1 2 3。
其中,k表示左移的位数,n表示数组的长度。最后得到的数组就是循环左移后的结果。
以下是C++实现代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
void reverse(int arr[], int start, int end) {
while (start < end) {
swap(arr[start], arr[end]);
start++;
end--;
}
}
void leftRotate(int arr[], int n, int k) {
k %= n; // 处理k大于n的情况
reverse(arr, 0, n-1);
reverse(arr, 0, k-1);
reverse(arr, k, n-1);
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int k = 1;
leftRotate(arr, n, k);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:2 3 4 5 1。
阅读全文