Sort the array in a given index range

Given an array arr[] of N integers and an index range [a, b]. The task is to sort the array in this given index range i.e., sort the elements of the array from arr[a] to arr[b] while keeping the positions of other elements intact and print the modified array.
Note: There is no relation between a and b i.e., a can be less than, equal to or greater than b. Also, 0 ≤ a, b < N

Examples:

Input: arr[] = {7, 8, 4, 5, 2}, a = 1, b = 4
Output: 7 2 4 5 8
For the index range [1, 4] we get the elements 8, 4, 5 and 2
On sorting these elements we get 2, 4, 5 and 8.
So the array is modified as {7, 2, 4, 5, 8}

Input: arr[] = {20, 10, 3, 8}, a = 3, b = 1
Output: 20 3 8 10

Approach:

  1. Make a temporary array of the elements for the given index range of the array.
  2. Sort this temporary array.
  3. Now modify the original array with these sorted elements of temporary array for the given index range.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to sort the 
// array in a given index range 
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to sort the elements of the array 
// from index a to index b 
void partSort(int arr[], int N, int a, int b) 
    // Variables to store start and
    // end of the index range 
    int l = min(a, b); 
    int r = max(a, b); 
  
    // Temporary array 
    int temp[r - l + 1]; 
    int j = 0; 
    for (int i = l; i <= r; i++) { 
        temp[j] = arr[i]; 
        j++; 
    
  
    // Sort the temporary array 
    sort(temp, temp + r - l + 1); 
  
    // Modifying original array with
    // temporary array elements 
    j = 0; 
    for (int i = l; i <= r; i++) { 
            arr[i] = temp[j]; 
            j++; 
    
  
    // Print the modified array 
    for (int i = 0; i < N; i++) { 
            cout << arr[i] << " "
        }
          
  
  
// Driver code 
int main()
{
    int arr[] = { 7, 8, 4, 5, 2 } ;
    int a = 1 ;
    int b = 4; 
  
    // length of the array 
    int N = sizeof(arr) / sizeof(arr[0]); 
  
    partSort(arr, N, a, b); 
    return 0;
}
// This code is contributed by Ryuga

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to sort the array in a given index range
import java.io.*;
import java.util.*;
import java.lang.*;
  
class GFG {
  
    // Function to sort the elements of the array
    // from index a to index b
    static void partSort(int[] arr, int N, int a, int b)
    {
        // Variables to store start and end of the index range
        int l = Math.min(a, b);
        int r = Math.max(a, b);
  
        // Temporary array
        int[] temp = new int[r - l + 1];
        int j = 0;
        for (int i = l; i <= r; i++) {
            temp[j] = arr[i];
            j++;
        }
  
        // Sort the temporary array
        Arrays.sort(temp);
  
        // Modifying original array with temporary array elements
        j = 0;
        for (int i = l; i <= r; i++) {
            arr[i] = temp[j];
            j++;
        }
  
        // Print the modified array
        for (int i = 0; i < N; i++) {
            System.out.print(arr[i] + " ");
        }
    }
  
    // Driver code
    public static void main(String args[])
    {
        int[] arr = { 7, 8, 4, 5, 2 };
        int a = 1, b = 4;
  
        // length of the array
        int N = arr.length;
  
        partSort(arr, N, a, b);
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to sort the 
# array in a given index range 
  
# Function to sort the elements of 
# the array from index a to index b 
def partSort(arr, N, a, b):
      
    # Variables to store start and
    # end of the index range 
    l = min(a, b)
    r = max(a, b)
  
    # Temporary array 
    temp = [0 for i in range(r - l + 1)]
    j = 0
    for i in range(l, r + 1, 1):
        temp[j] = arr[i]
        j += 1
      
    # Sort the temporary array 
    temp.sort(reverse = False)
  
    # Modifying original array with
    # temporary array elements 
    j = 0
    for i in range(l, r + 1, 1):
            arr[i] = temp[j]
            j += 1
  
    # Print the modified array 
    for i in range(0, N, 1):
            print(arr[i], end = " ")
  
# Driver code 
if __name__ == '__main__':
    arr = [7, 8, 4, 5, 2]
    a = 1
    b = 4
  
    # length of the array 
    N = len(arr) 
  
    partSort(arr, N, a, b)
  
# This code is contributed by 
# Surendra_Gangwar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to sort the array in a given index range
using System;
class GFG {
  
    // Function to sort the elements of the array
    // from index a to index b
    static void partSort(int[] arr, int N, int a, int b)
    {
        // Variables to store start and end of the index range
        int l = Math.Min(a, b);
        int r = Math.Max(a, b);
  
        // Temporary array
        int[] temp = new int[r - l + 1];
        int j = 0;
        for (int i = l; i <= r; i++) {
            temp[j] = arr[i];
            j++;
        }
  
        // Sort the temporary array
        Array.Sort(temp);
  
        // Modifying original array with temporary array elements
        j = 0;
        for (int i = l; i <= r; i++) {
            arr[i] = temp[j];
            j++;
        }
  
        // Print the modified array
        for (int i = 0; i < N; i++) {
            Console.Write(arr[i] + " ");
        }
    }
  
    // Driver code
    public static void Main()
    {
        int[] arr = { 7, 8, 4, 5, 2 };
        int a = 1, b = 4;
  
        // length of the array
        int N = arr.Length;
  
        partSort(arr, N, a, b);
    }
}
// This code is contributed by anuj_67

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
# PHP program to sort the 
# array in a given index range 
  
  
  
// Function to sort the elements of the array 
// from index a to index b 
function partSort( $arr,$N, $a, $b
    // Variables to store start and
    // end of the index range 
    $l = min($a, $b); 
     $r = max($a, $b); 
  
    // Temporary array 
    $temp = array(); 
    $j = 0; 
    for ($i = $l; $i <= $r; $i++) { 
        $temp[$j] = $arr[$i]; 
        $j++; 
    
  
    // Sort the temporary array 
    sort($temp); 
  
    // Modifying original array with
    // temporary array elements 
    $j = 0; 
    for ($i = $l; $i <= $r; $i++) { 
            $arr[$i] = $temp[$j]; 
            $j++; 
    
  
    // Print the modified array 
    for ($i = 0; $i < $N; $i++) { 
            echo $arr[$i]." "
        }
          
  
  
  
    $arr = array( 7, 8, 4, 5, 2 ) ;
    $a = 1 ;
    $b = 4; 
  
    // length of the array 
    $N = count($arr); 
  
    partSort($arr, $N, $a, $b); 
    //This code is contributed by 29AjayKumar
    ?>

chevron_right


Output:

7 2 4 5 8

Below is a direct solution using Arrays.sort() in Java

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to sort the array in a given index range
#include<bits/stdc++.h>
using namespace std;
  
    // Function to sort the elements of the array
    // from index a to index b
    void partSort(int arr[], int N, int a, int b)
    {
        // Variables to store start and end 
        // of the index range
        int l = min(a, b);
        int r = max(a, b);
          
        vector<int> v(arr, arr + N);
  
        // Sort the subarray from arr[l] to
        // arr[r]
        sort(v.begin() + l, v.begin() + r + 1);
  
        // Print the modified array
        for (int i = 0; i < N; i++) 
            cout << v[i] << " ";
    }
  
    // Driver code
    int main()
    {
        int arr[] = { 7, 8, 4, 5, 2 };
        int a = 1, b = 4;
        int N = sizeof(arr)/sizeof(arr[0]);
        partSort(arr, N, a, b);
    }
      
// This code is contributed by
// Sanjit_Prasad

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to sort the array in a given index range
import java.io.*;
import java.util.*;
import java.lang.*;
  
class GFG {
  
    // Function to sort the elements of the array
    // from index a to index b
    static void partSort(int[] arr, int N, int a, int b)
    {
        // Variables to store start and end 
        // of the index range
        int l = Math.min(a, b);
        int r = Math.max(a, b);
  
        // Sort the subarray from arr[l] to
        // arr[r]
        Arrays.sort(arr, l, r+1);
  
        // Print the modified array
        for (int i = 0; i < N; i++) 
            System.out.print(arr[i] + " ");
    }
  
    // Driver code
    public static void main(String args[])
    {
        int[] arr = { 7, 8, 4, 5, 2 };
        int a = 1, b = 4;
        int N = arr.length;
        partSort(arr, N, a, b);
    }
}

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to sort the array in a given index range
using System;
  
class GFG
{
  
    // Function to sort the elements of the array
    // from index a to index b
    static void partSort(int []arr, int N, int a, int b)
    {
        // Variables to store start and end 
        // of the index range
        int l = Math.Min(a, b);
        int r = Math.Max(a, b);
  
        // Sort the subarray from arr[l] to
        // arr[r]
        Array.Sort(arr, l, r);
  
        // Print the modified array
        for (int i = 0; i < N; i++) 
            Console.Write(arr[i] + " ");
    }
  
    // Driver code
    static void Main()
    {
        int []arr = { 7, 8, 4, 5, 2 };
        int a = 1, b = 4;
        int N = arr.Length;
        partSort(arr, N, a, b);
    }
}
  
// This code is contributed by mits

chevron_right


Output:

7 2 4 5 8


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.