Sort the array in a given index range
Last Updated :
13 Sep, 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.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void partSort( int arr[], int N, int a, int b)
{
int l = min(a, b);
int r = max(a, b);
int temp[r - l + 1];
int j = 0;
for ( int i = l; i <= r; i++) {
temp[j] = arr[i];
j++;
}
sort(temp, temp + r - l + 1);
j = 0;
for ( int i = l; i <= r; i++) {
arr[i] = temp[j];
j++;
}
for ( int i = 0; i < N; i++) {
cout << arr[i] << " " ;
}
}
int main()
{
int arr[] = { 7, 8, 4, 5, 2 } ;
int a = 1 ;
int b = 4;
int N = sizeof (arr) / sizeof (arr[0]);
partSort(arr, N, a, b);
return 0;
}
|
Java
import java.io.*;
import java.util.*;
import java.lang.*;
class GFG {
static void partSort( int [] arr, int N, int a, int b)
{
int l = Math.min(a, b);
int r = Math.max(a, b);
int [] temp = new int [r - l + 1 ];
int j = 0 ;
for ( int i = l; i <= r; i++) {
temp[j] = arr[i];
j++;
}
Arrays.sort(temp);
j = 0 ;
for ( int i = l; i <= r; i++) {
arr[i] = temp[j];
j++;
}
for ( int i = 0 ; i < N; i++) {
System.out.print(arr[i] + " " );
}
}
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
def partSort(arr, N, a, b):
l = min (a, b)
r = max (a, b)
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
temp.sort(reverse = False )
j = 0
for i in range (l, r + 1 , 1 ):
arr[i] = temp[j]
j + = 1
for i in range ( 0 , N, 1 ):
print (arr[i], end = " " )
if __name__ = = '__main__' :
arr = [ 7 , 8 , 4 , 5 , 2 ]
a = 1
b = 4
N = len (arr)
partSort(arr, N, a, b)
|
C#
using System;
class GFG {
static void partSort( int [] arr, int N, int a, int b)
{
int l = Math.Min(a, b);
int r = Math.Max(a, b);
int [] temp = new int [r - l + 1];
int j = 0;
for ( int i = l; i <= r; i++) {
temp[j] = arr[i];
j++;
}
Array.Sort(temp);
j = 0;
for ( int i = l; i <= r; i++) {
arr[i] = temp[j];
j++;
}
for ( int i = 0; i < N; i++) {
Console.Write(arr[i] + " " );
}
}
public static void Main()
{
int [] arr = { 7, 8, 4, 5, 2 };
int a = 1, b = 4;
int N = arr.Length;
partSort(arr, N, a, b);
}
}
|
PHP
<?php
# PHP program to sort the
# array in a given index range
function partSort( $arr , $N , $a , $b )
{
$l = min( $a , $b );
$r = max( $a , $b );
$temp = array ();
$j = 0;
for ( $i = $l ; $i <= $r ; $i ++) {
$temp [ $j ] = $arr [ $i ];
$j ++;
}
sort( $temp );
$j = 0;
for ( $i = $l ; $i <= $r ; $i ++) {
$arr [ $i ] = $temp [ $j ];
$j ++;
}
for ( $i = 0; $i < $N ; $i ++) {
echo $arr [ $i ]. " " ;
}
}
$arr = array ( 7, 8, 4, 5, 2 ) ;
$a = 1 ;
$b = 4;
$N = count ( $arr );
partSort( $arr , $N , $a , $b );
?>
|
Javascript
<script>
function partSort(arr, N, a, b)
{
let l = Math.min(a, b);
let r = Math.max(a, b);
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++;
}
temp.sort( function (a, b){ return a - b});
j = 0;
for (let i = l; i <= r; i++) {
arr[i] = temp[j];
j++;
}
for (let i = 0; i < N; i++) {
document.write(arr[i] + " " );
}
}
let arr = [ 7, 8, 4, 5, 2 ];
let a = 1, b = 4;
let N = arr.length;
partSort(arr, N, a, b);
</script>
|
Complexity Analysis:
- Time Complexity: O(nlog(n))
- Auxiliary Space: O(n)
Below is a direct solution using Arrays.sort()
C++
#include<bits/stdc++.h>
using namespace std;
void partSort( int arr[], int N, int a, int b)
{
int l = min(a, b);
int r = max(a, b);
vector< int > v(arr, arr + N);
sort(v.begin() + l, v.begin() + r + 1);
for ( int i = 0; i < N; i++)
cout << v[i] << " " ;
}
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);
}
|
Java
import java.io.*;
import java.util.*;
import java.lang.*;
class GFG {
static void partSort( int [] arr, int N, int a, int b)
{
int l = Math.min(a, b);
int r = Math.max(a, b);
Arrays.sort(arr, l, r + 1 );
for ( int i = 0 ; i < N; i++)
System.out.print(arr[i] + " " );
}
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
def partSort(arr, N, a, b):
l = min (a, b)
r = max (a, b)
arr = (arr[ 0 : l] +
sorted (arr[l : r + 1 ]) +
arr[r : N])
for i in range ( 0 , N, 1 ):
print (arr[i], end = " " )
if __name__ = = '__main__' :
arr = [ 7 , 8 , 4 , 5 , 2 ]
a = 1
b = 4
N = len (arr)
partSort(arr, N, a, b)
|
C#
using System;
class GFG {
static void partSort( int [] arr, int N, int a, int b)
{
int l = Math.Min(a, b);
int r = Math.Max(a, b);
Array.Sort(arr, l, r);
for ( int i = 0; i < N; i++)
Console.Write(arr[i] + " " );
}
static void Main()
{
int [] arr = { 7, 8, 4, 5, 2 };
int a = 1, b = 4;
int N = arr.Length;
partSort(arr, N, a, b);
}
}
|
Javascript
<script>
function swap(arr, xp, yp)
{
var temp = arr[xp];
arr[xp] = arr[yp];
arr[yp] = temp;
}
function partSort(arr , N , a , b)
{
var l = Math.min(a, b);
var r = Math.max(a, b);
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);
}
}
}
for (i = 0; i < N; i++)
document.write(arr[i] + " " );
}
var arr = [ 7, 8, 4, 5, 2 ];
var a = 1, b = 4;
var N = arr.length;
partSort(arr, N, a, b);
</script>
|
Complexity Analysis:
- Time Complexity: O(nlog(n))
- Auxiliary Space: O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...