# Split the array efficient method

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);`

`` `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