Dada una array de pares de enteros. La tarea es ordenar la array con respecto al segundo elemento del par.
Ejemplos:
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)]
Acercarse:
- Almacene los pares en una array utilizando una clase de par definida por el usuario .
- Anule el método de comparación para ordenar la array de acuerdo con el primer elemento.
- Ordene la array según el primer elemento.
A continuación se muestra la implementación del enfoque anterior:
Java
// Java code to sort the array // according to second element import java.io.*; import java.util.*; // User defined Pair class class Pair { int x; int y; // Constructor public Pair(int x, int y) { this.x = x; this.y = y; } } // class to define user defined conparator class Compare { static void compare(Pair arr[], int n) { // Comparator to sort the pair according to second element Arrays.sort(arr, new Comparator<Pair>() { @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 x. } }); for (int i = 0; i < n; i++) { System.out.print(arr[i].x + " " + arr[i].y + " "); } System.out.println(); } } // Driver class class GFG { // Driver code public static void main(String[] args) { Scanner sc = new Scanner(System.in); // length of array int n = 5; // Array of Pair Pair arr[] = new Pair[n]; 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); Compare obj = new Compare(); obj.compare(arr, n); } }
Producción:
3 1 1 2 4 3 10 8 10 20