Sort the array in a given index range

15 Jun, 2022
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: 
Make a temporary array of the elements for the given index range of the array.Sort this temporary array.Now modify the original array with these sorted elements of temporary array for the given index range.
Make a temporary array of the elements for the given index range of the array.
Sort this temporary array.
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++
Java
Python3
C#
PHP
Javascript
// 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 bvoid 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 codeint 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
// Java program to sort the array in a given index rangeimport 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);    }}
# 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 bdef 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 codeif __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
// C# program to sort the array in a given index rangeusing 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
<?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 bfunction 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    ?>
<script>    // Javascript 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        let l = Math.min(a, b);        let r = Math.max(a, b);          // Temporary array        let temp = new Array(r - l + 1);        temp.fill(0);        let j = 0;        for (let i = l; i <= r; i++) {            temp[j] = arr[i];            j++;        }          // Sort the temporary array        temp.sort(function(a, b){return a - b});          // Modifying original array with temporary array elements        j = 0;        for (let i = l; i <= r; i++) {            arr[i] = temp[j];            j++;        }          // Print the modified array        for (let i = 0; i < N; i++) {            document.write(arr[i] + " ");        }    }         let arr = [ 7, 8, 4, 5, 2 ];    let a = 1, b = 4;     // length of the array    let N = arr.length;     partSort(arr, N, a, b); </script>
7 2 4 5 8
 
Time Complexity: O(nlog(n))Auxiliary Space: O(n)
Below is a direct solution using Arrays.sort() 
C++
Java
Python3
C#
Javascript
// 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);                 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
// Java program to sort the array in a given index rangeimport 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);    }}
# Python3 program to sort the# array in a given index range # Function to sort the elements of# the array from index a to index bdef partSort(arr, N, a, b):         # Variables to store start and    # end of the index range    l = min(a, b)    r = max(a, b)     arr = (arr[0 : l] +    sorted(arr[l : r + 1]) +           arr[r : N])     # Print the modified array    for i in range(0, N, 1):            print(arr[i], end = " ") # Driver codeif __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 grand_master
// C# program to sort the array in a given index rangeusing 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
<script>// javascript program to sort the array in a given index range// Function to sort the elements of the array// from index a to index bfunction swap(arr, xp, yp){    var temp = arr[xp];    arr[xp] = arr[yp];    arr[yp] = temp;}    function partSort(arr , N , a , b)    {             // Variables to store start and end        // of the index range        var l = Math.min(a, b);        var r = Math.max(a, b);         // Sort the subarray from arr[l] to        // arr[r]        //.sort(arr, l, r + 1);        var i, j;        for (i = l; i < r + 1 + 1; i++)        {            for (j = l; j < r - i + 1; j++)            {        if (arr[j] > arr[j + 1])        {        swap(arr, j, j + 1);                   }    }   }         // Print the modified array        for (i = 0; i < N; i++)            document.write(arr[i] + " ");    }     // Driver code        var arr = [ 7, 8, 4, 5, 2 ];        var a = 1, b = 4;        var N = arr.length;        partSort(arr, N, a, b); // This code is contributed by gauravrajput1</script>
7 2 4 5 8
 
Time Complexity: O(nlog(n))Auxiliary Space: O(n)
vt_m
ankthon
SURENDRA_GANGWAR
29AjayKumar
Sanjit_Prasad
Mithun Kumar
grand_master
decode2207
GauravRajput1
simranarora5sos
pushpeshrajdx01
Arrays
Sorting Quiz
Arrays
Java Programs
Sorting
Technical Scripter
Arrays
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Find the smallest positive integer value that cannot be represented as sum of any subset of a given array
Find a triplet that sum to a given value
Product of Array except itself
Median of two sorted arrays of same size
Smallest subarray with sum greater than a given value
Initializing a List in Java
Java Programming Examples
Convert a String to Character Array in Java
Convert Double to Integer in Java
Implementing a Linked List in Java using Class