Hello Everyone,
There is a given array and split it from a specified position, and move the first part of the array add to the end.
Examples:
Input : arr[] = {12, 10, 5, 6, 52, 36} k = 2 Output : arr[] = {5, 6, 52, 36, 12, 10} Explanation : Split from index 2 and first part {12, 10} add to the end . Input : arr[] = {3, 1, 2} k = 1 Output : arr[] = {1, 2, 3} Explanation : Split from index 1 and first part add to the end.
Efficient approach: Another approach is to make a temporary array with double the size and copy our array element into a new array twice .and then copy the element from the new array to our array by taking the rotation as starting index up to the length of our array.
Below is the implementation of the above approach.
- C++
// CPP program to split array and move first
// part to end.
#include <bits/stdc++.h>
using
namespace
std;
// Function to spilt array and
// move first part to end
void
splitArr(
int
arr[],
int
length,
int
rotation)
{
`` int
tmp[length * 2] = {0};
`` for
(
int
i = 0; i < length; i++)
`` {
`` tmp[i] = arr[i];
`` tmp[i + length] = arr[i];
`` }
`` for
(
int
i = rotation; i < rotation + length; i++)
`` {
`` arr[i - rotation] = tmp[i];
`` }
}
// Driver code
int
main()
{
`` int
arr[] = { 12, 10, 5, 6, 52, 36 };
`` int
n =
sizeof
(arr) /
sizeof
(arr[0]);
`` int
position = 2;
`` splitArr(arr, n, position);
`` for
(
int
i = 0; i < n; ++i)
`` printf
(
"%d "
, arr[i]);
`` return
0;
}
Output:
5 6 52 36 12 10