Given an array of pairs of integers. The task is to sort the array with respect to the second element of the pair.
Examples:
Input: [(1, 2), (3, 5), (2, 6), (1, 7)]
Output: [(1, 2), (3, 5), (2, 6), (1, 7)]Input: [(10, 20), (20, 30), (5, 6), (2, 5)]
Output: [(2, 5), (5, 6), (10, 20), (20, 30)]
Approach:
- Store the pairs in an array using a user-defined Pair class.
- Override the comparator method to sort the array according to the second element.
- Sort the array according to the second element.
Below is the implementation of the above approach:
Java
// Java code to sort the array // according to second element // Importing required classes import java.util.Arrays;
import java.util.Comparator;
// User defined Pair class class Pair {
int x;
int y;
// Constructor
public Pair( int x, int y) {
this .x = x;
this .y = y;
}
// Overriding toString method
// for beautiful printing of pairs
@Override
public String toString() {
return "(" + x +
", " + y +
')' ;
}
} // class to define user defined comparator class ArrayOfPairsSorter {
static void sort(Pair[] arr) {
Comparator<Pair> comparator = new Comparator<>() {
@Override
public int compare(Pair p1, Pair p2) {
return p1.y
- p2.y; // To compare the first element
// just
// change the variable from p1.y
// - p2.y to p1.x-p2.x.
}
};
Arrays.sort(arr, comparator);
}
} // Main class class GFG {
// Main driver method
public static void main(String[] args) {
// Array of 5 Pairs
Pair[] arr = new Pair[ 5 ];
arr[ 0 ] = new Pair( 10 , 20 );
arr[ 1 ] = new Pair( 1 , 2 );
arr[ 2 ] = new Pair( 3 , 1 );
arr[ 3 ] = new Pair( 10 , 8 );
arr[ 4 ] = new Pair( 4 , 3 );
ArrayOfPairsSorter.sort(arr);
System.out.println(Arrays.toString(arr));
}
} |
Output:
[(3, 1), (1, 2), (4, 3), (10, 8), (10, 20)]