Given an array and split it from a specified position, and move the first part of array add to the end.
Examples:
Input : arr[] = {12, 10, 5, 6, 52, 36}
k = 2Output : 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.
A O(n*k) solution is discussed here.
This problem can be solved in O(n) time using the reversal algorithm discussed below,
- Reverse array from 0 to n – 1 (where n is size of the array).
- Reverse array from 0 to n – k – 1.
- Reverse array from n – k to n – 1.
Implementation:
C++
// C++ program to Split the array and// add the first part to the end#include <bits/stdc++.h>using namespace std;/* Function to reverse arr[] from index start to end*/void rvereseArray(int arr[], int start, int end){ while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; }}// Function to print an arrayvoid printArray(int arr[], int size){ for (int i = 0; i < size; i++) cout << arr[i] << " ";}/* Function to left rotate arr[] of size n by k */void splitArr(int arr[], int k, int n){ rvereseArray(arr, 0, n - 1); rvereseArray(arr, 0, n - k - 1); rvereseArray(arr, n - k, n - 1);}/* Driver program to test above functions */int main(){ int arr[] = { 12, 10, 5, 6, 52, 36 }; int n = sizeof(arr) / sizeof(arr[0]); int k = 2; // Function calling splitArr(arr, k, n); printArray(arr, n); return 0;} |
Java
// Java program to Split the array and// add the first part to the endclass Geeks{ /* Function to reverse arr[] from index start to end*/static void rvereseArray(int arr[], int start, int end){ while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; }}// Function to print an arraystatic void printArray(int arr[], int size){ for (int i = 0; i < size; i++) System.out.print(arr[i] +" ");}/* Function to left rotate arr[] of size n by k */static void splitArr(int arr[], int k, int n){ rvereseArray(arr, 0, n - 1); rvereseArray(arr, 0, n - k - 1); rvereseArray(arr, n - k, n - 1);}/* Driver program to test above functions */public static void main(String args[]){ int arr[] = { 12, 10, 5, 6, 52, 36 }; int n = arr.length; int k = 2; // Function calling splitArr(arr, k, n); printArray(arr, n);}}// This code is contributed by ankita_saini. |
Python3
# Python3 program to Split the array# and add the first part to the end # Function to reverse arr[] # from index start to end*/def rvereseArray(arr, start, end): while start < end : temp = arr[start] arr[start] = arr[end] arr[end] =temp start += 1 end -= 1# Function to print an array def printArray(arr, n) : for i in range(n): print(arr[i], end = " ")# Function to left rotate# arr[] of size n by k */def splitArr(arr, k, n): rvereseArray(arr, 0, n - 1) rvereseArray(arr, 0, n - k - 1) rvereseArray(arr, n - k, n - 1)# Driver Codearr = [12, 10, 5, 6, 52, 36]n = len(arr)k = 2splitArr(arr, k, n)printArray(arr, n)# This code is contributed # by Shrikant13 |
C#
// C# program to Split the array and// add the first part to the endusing System;class GFG{ /* Function to reverse arr[] from index start to end*/static void rvereseArray(int[] arr, int start, int end){ while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; }}// Function to print an arraystatic void printArray(int[] arr, int size){ for (int i = 0; i < size; i++) Console.Write(arr[i] +" ");}/* Function to left rotate arr[] of size n by k */static void splitArr(int[] arr, int k, int n){ rvereseArray(arr, 0, n - 1); rvereseArray(arr, 0, n - k - 1); rvereseArray(arr, n - k, n - 1);}// Driver codepublic static void Main(){ int[] arr = { 12, 10, 5, 6, 52, 36 }; int n = arr.Length; int k = 2; // Function calling splitArr(arr, k, n); printArray(arr, n);}}// This code is contributed // by Akanksha Rai(Abby_akku) |
PHP
<?php// PHP program to Split the array and// add the first part to the end/* Function to reverse arr[] from index start to end*/function rvereseArray(&$arr, $start, $end){ while ($start < $end) { $temp = $arr[$start]; $arr[$start] = $arr[$end]; $arr[$end] = $temp; $start++; $end--; }}// Function to print an arrayfunction printArray(&$arr, $size){ for ($i = 0; $i < $size; $i++) echo $arr[$i] . " ";}/* Function to left rotate arr[] of size n by k */function splitArr(&$arr, $k, $n){ rvereseArray($arr, 0, $n - 1); rvereseArray($arr, 0, $n - $k - 1); rvereseArray($arr, $n - $k, $n - 1);}/* Driver program to test above functions */$arr = array( 12, 10, 5, 6, 52, 36 );$n = sizeof($arr);$k = 2;// Function callingsplitArr($arr, $k, $n);printArray($arr, $n);// This code is contributed // by Akanksha Rai(Abby_akku)?> |
Javascript
<script>// Javascript program to Split the array and// add the first part to the end/* Function to reverse arr[] from index start to end*/function rvereseArray(arr, start, end){ while (start < end) { let temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; }}// Function to print an arrayfunction printArray(arr, size){ for (let i = 0; i < size; i++) document.write(arr[i] + " ");}/* Function to left rotate arr[] of size n by k */function splitArr(arr, k, n){ rvereseArray(arr, 0, n - 1); rvereseArray(arr, 0, n - k - 1); rvereseArray(arr, n - k, n - 1);}/* Driver program to test above functions */let arr = new Array( 12, 10, 5, 6, 52, 36 );let n = arr.length;let k = 2;// Function callingsplitArr(arr, k, n);printArray(arr, n);// This code is contributed// by _saurabh_jaiswal</script> |
5 6 52 36 12 10
Time Complexity: O(n)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

