Reverse an array upto a given position

Given an array arr[] and a position in array, k. Write a function name reverse (a[], k) such that it reverses subarray arr[0..k-1]. Extra space used should be O(1) and time complexity should be O(k).

Example:

Input:
arr[] = {1, 2, 3, 4, 5, 6}
    k = 4

Output:
arr[] = {4, 3, 2, 1, 5, 6} 

We strongly recommend you to minimize your browser and try this yourself first.

Below is the implementation for the same.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to reverse a subarray arr[0..k-1]
#include <bits/stdc++.h>
using namespace std;
  
// Reverse subarray a[0..k-1]
void reverse(int a[], int n, int k)
{
    if (k > n)
    {
        cout << "Invalid k";
        return;
    }
  
    // One by one reverse first and last elements of a[0..k-1]
    for (int i = 0; i < k/2; i++)
        swap(a[i], a[k-i-1]);
}
  
// Driver program
int main()
{
    int a[] = {1, 2, 3, 4, 5, 6};
    int n = sizeof(a) / sizeof(int), k = 4;
  
    reverse(a, n, k);
  
    for (int i = 0; i < n; ++i)
        printf("%d ", a[i]);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// java program to reverse a 
// subarray arr[0..k-1]
  
public class GFG {
  
    // Reverse subarray a[0..k-1]
    static void reverse(int []a, int n, int k)
    {
        if (k > n)
        {
            System.out.println( "Invalid k");
            return;
        }
      
        // One by one reverse first 
        // and last elements of a[0..k-1]
        for (int i = 0; i < k / 2; i++)
        {
            int tempswap = a[i]; 
                a[i] = a[k - i - 1]; 
                a[k - i - 1] = tempswap;             
        
    }
  
    // Driver code
    public static void main(String args[])
    {
        int []a = {1, 2, 3, 4, 5, 6};
        int n = a.length, k = 4;
        reverse(a, n, k);
        for (int i = 0; i < n; ++i)
            System.out.print(a[i] + " ");
    }
}
  
// This code is contributed by Sam007.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# python program to reverse a subarray
# arr[0..k-1]
from __future__ import print_function
  
# Reverse subarray a[0..k-1]
def reverse(a, n, k):
      
    if (k > n):
        print( "Invalid k")
        return
      
    # One by one reverse first and
    # last elements of a[0..k-1]
    for i in range(0, (int)(k/2)):
        temp = a[i]
        a[i] = a[k-i-1]
        a[k-i-1] = temp
          
# Driver program
a = [1, 2, 3, 4, 5, 6]
n = len(a)
k = 4
  
reverse(a, n, k);
  
for i in range(0, n):
    print(a[i], end=" ")
      
# This code is contributed by Sam007.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to reverse a 
// subarray arr[0..k-1]
using System;
  
class GFG {
      
static void SwapNum(ref int x, ref int y) 
{
    int tempswap = x; 
    x = y; 
    y = tempswap;             
      
// Reverse subarray a[0..k-1]
static void reverse(int []a, int n, 
                             int k)
{
    if (k > n)
    {
        Console.Write( "Invalid k");
        return;
    }
  
    // One by one reverse first 
    // and last elements of a[0..k-1]
    for (int i = 0; i < k / 2; i++)
        SwapNum(ref a[i], ref a[k - i - 1]);
          
}
  
// Driver Code
public static void Main()
{
    int []a = {1, 2, 3, 4, 5, 6};
    int n = a.Length, k = 4;
  
    reverse(a, n, k);
  
    for (int i = 0; i < n; ++i)
        Console.Write(a[i] + " ");
}
}
  
// This code is contributed by Sam007

chevron_right



Output:



4 3 2 1 5 6

Time complexity: O(k)

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Improved By : Sam007, nidhi_biet

Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.