
在给定的问题中,我们有一个数组,并且我们需要使用反转算法将数组旋转d个元素,例如 −
Input : arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2 Output : arr[] = [3, 4, 5, 6, 7, 1, 2] Explanation : As you can see we have to rotate this array by d = 2 but our main task is to achieve this by using a reversal technique.
我们对数组的旋转进行了一些反转技术的计算,并得出结论:
通过应用这三个步骤,我们可以得到旋转后的数组。
在这个问题中,首先,我们要编写一个反转元素的函数;现在我们按照上述步骤进行操作。
立即学习“C++免费学习笔记(深入)”;
#include <bits/stdc++.h>
using namespace std;
void reverseArray(int arr[], int start, int end) { // our reversal algorithm
while (start < end) { // if start becomes equal to end we break the loop
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
return ;
}
void Rotate(int arr[], int d, int n) { // rotation function
if (d == 0) // no rotation required
return;
d = d % n; // when d becomes equal to n so our array comes to its original form
reverseArray(arr, 0, d - 1); // reversing first d elements
reverseArray(arr, d, n - 1); // reversing the remaining elements
reverseArray(arr, 0, n - 1); // reversing the whole array
return ;
}
int main() {
int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; // given array
int n = sizeof(arr) / sizeof(arr[0]); // size of our array
int d = 2;
Rotate(arr, d, n);
for(int i = 0; i < n; i++) // printing the array
cout << arr[i] << " ";
cout << "\n";
return 0;
}3 4 5 6 7 1 2
在上述方法中,我们首先创建了一个反转技术,它将接受三个参数,即数组、起始索引和结束索引,并将我们的数组从起始位置到结束位置进行反转。由于我们之前已经开发了算法,我们将使用这个函数来应用该算法。首先,我们反转前d个元素。然后,我们反转剩余的元素,最后,我们反转整个数组。结果是,我们的数组被旋转了d个位置。在旋转函数中,我们将d设置为d % n。这是因为如果我们旋转数组的前n个元素,得到的答案将与之前相同,所以我们对d取模n。
在本文中,我们解决了一个应用反转算法进行数组旋转的问题。我们还学习了解决这个问题的C++程序和完整的(正常)方法。我们可以用其他语言如C、Java、Python和其他语言编写相同的程序。希望本文对您有所帮助。
以上就是使用C++编写的数组旋转的逆转算法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号