Introducción a la ordenación en Java

  • La ordenación en Java consiste básicamente en organizar un grupo de elementos almacenados en algún lugar en un orden particular, este orden puede ser tanto ascendente como descendente. Existen muchos escenarios en la programación en tiempo real en los que se hace necesario ordenar los elementos, ya que también hace que buscar un elemento particular fácil ya que los elementos pueden recuperarse fácilmente mediante el índice de matrices directamente si se ordenan. Los elementos que deben clasificarse pueden almacenarse en una matriz o en una colección. La colección es de muchos tipos en Conjuntos, Árbol, Mapa, Montón, Lista, etc., similares a Java, aunque existen diferentes tipos de Algoritmos de Clasificación que se utilizan para clasificar los elementos en un Cuadro de Burbujas, Clasificación de Montones, Clasificación de Inserción, Ordenar selección, Ordenar fusión, etc.
  • Los programadores usan diferentes algoritmos para clasificar los elementos de acuerdo con sus requisitos específicos y la complejidad de los algoritmos. Estos algoritmos de clasificación se implementan mediante el uso de varios bucles y variables para iterar a través de él. Además de usar los Algoritmos de clasificación para ordenar los elementos en una matriz, Java proporciona la función incorporada de clasificación que puede ayudar con lo mismo y el programador no necesita estar atrapado en grandes bucles y pensar en la complejidad. Sí, escuchó bien, en Java la función sort () se utiliza para ordenar los elementos almacenados en matrices o colecciones y con una complejidad muy menor de o (n (logn)). Aunque la implementación del método en ambos es un poco diferente.

Sintaxis para matrices:

Arrays.sort(array_name);

Para colecciones

Collections.sort(array_name_list);

  • Aquí array_name y array_name_list es el nombre de la matriz o la colección que necesita ser ordenada.
  • Las matrices son el nombre de las clases de Java.
  • La colección es un marco en Java.
  • sort () es la función de clasificación incorporada utilizada en Java.

¿Cómo se realiza la ordenación en Java?

Los siguientes son los puntos de la siguiente manera:

  • Mediante el uso de algoritmos de clasificación, la clasificación también se puede realizar con algoritmos que varían de ineficientes a eficientes y cada algoritmo tiene su propia complejidad de tiempo y espacio.
  • A veces, estos algoritmos tienen una complejidad muy alta que no se pueden usar en escenarios reales donde es necesario manejar grandes cantidades de datos.
  • Como se mencionó anteriormente, en la función incorporada de Java, sort () se usa para ordenar todos los elementos de una matriz y colección. De acuerdo con el Java DOC oficial, Array.sort usa el quicksort que es el doble pivote y comparativamente mucho más rápido que el Quick Sort de un solo pivote.
  • Una de las mayores ventajas de esto es que proporciona una complejidad de O (n (logn)). Utiliza la implementación muy estable e iterativa del objeto de matriz de Merge Sort. Java proporciona un método para ordenar la matriz en orden inverso también de acuerdo con el requisito del programador para ordenar en orden ascendente o descendente. El método Collections.reverseOrder () se usa para ordenar los elementos en orden inverso o descendente.
  • Java 8 también proporciona la posibilidad de ordenar las matrices en paralelo utilizando la clasificación paralela que utiliza el concepto de subprocesamiento múltiple de Java y divide la matriz completa en partes y las fusiona después de la clasificación.

Tipos de ordenación en Java

A continuación se mencionan algunas de las formas en que se puede realizar la clasificación en Ordenar en Java:

1. sort (array_name)

Esto se usa para ordenar la matriz completa en forma ascendente De manera predeterminada, este método ordena los elementos de la matriz en orden ascendente.

Código:

import java.util.Arrays;
public class SimpleSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() (100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Salida:

2. Collection.reverseOrder ()

Este método en Java se utiliza para ordenar la matriz en orden inverso o descendente. Hay escenarios en los que necesitamos ordenar los elementos en orden descendente y Java lo hace a través del método incorporado.

Código:

import java.util.Arrays;
public class ReverseSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr, Collections.reverseOrder());
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Salida:

3. sort (int () array_name, int findex, int lindex)

Si es necesario ordenar alguna parte de una matriz en lugar de toda la matriz, Java proporciona la posibilidad de ordenar este tipo de matriz especificando 3 parámetros, es decir, el nombre de la matriz, el primer índice desde donde debe iniciarse la clasificación y el último Indice hasta cuando la clasificación debe hacerse.

Código:

import java.util.Arrays;
public class ReverseSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//Sort function to sort the above array
Arrays.sort(arr, 1, 5);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)

Salida:

4. Arrays.parllelSort (array_name)

Desde Java 8, se ha lanzado la nueva API del tipo paralelo. Básicamente, en forma paralela, la matriz se divide en 2 sub-matrices, y luego la función básica Array.sort () se realiza por un hilo separado. Las matrices ordenadas se fusionan al final para formar la matriz completamente ordenada. Esto se hace para aprovechar el uso de subprocesos múltiples.

Código:

import java.util.Arrays;
public class ParallelSort
(
public static void main(String() args)
(
//Unsorted array of numbers
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60);
//parallel Sort function to sort the above array
Arrays.parallelSort(arr);
//Printing the sorted array on console
System.out.println(Arrays.toString(arr));
)
)

Salida:

Al igual que un Array.sort () normal, Arrays.parallelSort () también proporciona la posibilidad de ordenar un rango particular de matriz o de ordenar una matriz en orden inverso.

Sintaxis:

// to Sort a range of array by parallelsort
Arrays.parallelSort(array_name, findex, lindex);
// to sort an array in reverse order using parallelSort
Arrays.parallelSort(array_name, Collections.reverseOder());

5. Collection.sort ()

Este método se utiliza para ordenar las colecciones como list, map, Set, etc. Utiliza el tipo de combinación y proporciona la misma complejidad que Array.sort (), es decir, O (n (logn)).

1. Ordenar una lista en orden ascendente

Código:

import java.util.Arrays;
import java.util.Collections;
public class ListSort
(
public static void main(String() args)
(
//Unsorted list
Integer() arr = new Integer() ( 100, 20, 10, 30, 80, 70, 90, 40, 50, 60 );
List arrList = Arrays.asList(arr);
//Sorting of list using the method
Collections.sort(arrList);
//Printing the list sorted above
System.out.println(arrList);
)
)

Salida:

2. Ordenar una lista de matrices en orden descendente

Código:

import java.util.Arrays;
import java.util.Collections;
public class ListSortRev
(
public static void main(String() args)
(
//Unsorted array list of Integers
Integer() arr = new Integer() (100, 20, 10, 30, 80, 70, 90, 40, 50, 60 );
List arrList = Arrays.asList(arr);
//Sorting of list using the method
Collections.sort(arrList);
//Printing the list sorted above
System.out.println(arrList);
)
)

Salida:

3. Clasificación del conjunto

Hay 3 reglas básicas al ordenar una colección 'Set' usando el método de clasificación anterior (array_name):

    1. Convierta el conjunto en la lista.
    2. Ordene la lista usando el método sort (array_name).
    3. Convierta la Lista ordenada resultante nuevamente en Establecer.

Código:

List numList = new ArrayList(num) ;
//Sorting the list retrieved above
Collections.sort(numList);
// Converting sorted List into Set
num = new LinkedHashSet(numList);
//Printing the Resulting Set on console
System.out.println(num);
)
)

Salida:

4. Ordenar un mapa

El mapa de recopilación en Java es una combinación de clave y valor Por lo tanto, la clasificación se puede hacer de ambas maneras, ya sea a través de clave o por valor.

  • Ordenar un mapa por clave: veamos el siguiente ejemplo de Ordenar un mapa por clave.

Código:

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class SortHashKey
(
public static void main(String() args)
(
HashMap map = new HashMap();
map.put(80, "Akshay");
map.put(20, "Akash");
map.put(10, "Bob");
map.put(30, “Nitika");
map.put(90, "Yashi");
map.put(100, "Dragisa");
TreeMap treeMap = new TreeMap(map);
System.out.println(treeMap);
)
)

Salida:

Una de las formas más fáciles de ordenar los elementos del Mapa por Claves es agregando los elementos del mapa sin clasificar en el TreeMap. TreeMap clasifica automáticamente los elementos en orden ascendente de Hash Keys. Aunque collection.sort () también se puede usar para hacer lo mismo, es algo complejo y debe codificarse bien.

  • Ordenar un mapa por valor: a continuación se muestra un ejemplo de cómo se puede ordenar en un mapa usando el valor.

Código:

import java.util.HashMap;
import java.util.Map;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Map;
public class SortHashValue
(
public static void main(String() args)
(
HashMap map = new HashMap(); map.put(80, "Akshay");
map.put(20, "Akash");
map.put(10, "Bob");
map.put(30, “Nitika");
map.put(90, "Yashi");
map.put(100, "Dragisa");
LinkedHashMap sorted = new LinkedHashMap(); map.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.forEachOrdered(x -> sorted.put(x.getKey(), x.getValue()));

Salida:

En el ejemplo anterior de clasificación de Map by value, primero establecemos las entradas usando map.entrySet () y luego stream de esas entradas usando el método stream (), llame a la matriz ordenada usando el método sorted () comparando por valor en el par. para cada ordenado () se usa para atravesar la secuencia para producir el resultado.

5. Comparable

Comparable es una interfaz y hace que las clases sean comparables a sus instancias.

Para comparar las dos instancias de la misma clase, se debe implementar una interfaz comparable y se debe anular el método compareTo (). Las clases que implementan esta interfaz, su lista de objetos se ordenan automáticamente utilizando el método Collections.sort () y Arrays.sort ().

Código:

ArrayList list = new ArrayList();
// Adding the instance objects of class Employee in list
list.add(new Employee(10, "Akshay")));
list.add(new Employee(40, "Bob")));
list.add(new Employee(20, "Priyansh")));
list.add(new Employee(50, "Chandni")));
list.add(new Employee(70, "Yashi")));
Collections.sort(list);
// Printing the sorted list on Console
System.out.println(list);

Salida:

Conclusión

Anteriormente se explican los métodos de Clasificación en Java que se utilizan en Java para múltiples escenarios de matrices y colecciones. Un programador debe tener en cuenta cómo se debe usar el método sort () para los diferentes tipos de Colección. Con Java 8, la clasificación también se puede hacer a través de Lambdas para implementar la interfaz Comparator, lo que facilita la clasificación. Aunque es un poco difícil aprenderlos todos, puede ser fácil trabajar con ellos si todos los conceptos básicos de Java, especialmente la transmisión de datos, matrices y colecciones, son claros. Aunque los algoritmos de clasificación son de hoja perenne y pueden implementarse fácilmente en otros lenguajes de programación similares a Java, tienen una complejidad variable y la función incorporada sort () de Java facilita las cosas si los conceptos básicos se aprenden de memoria.

Artículos recomendados

Esta es una guía para ordenar en Java. Aquí discutimos cómo se realiza la clasificación en Java y los tipos de clasificación en Java con diferentes códigos y salidas. También puede consultar nuestros otros artículos relacionados para obtener más información.

  1. JComboBox en Java
  2. Ordenar en C
  3. Heap Sort en C
  4. Ordenar burbujas en JavaScript
  5. ¿Qué es la clasificación en C ++?
  6. Introducción a la ordenación en PHP
  7. Heap Sort en Python
  8. Inserción Ordenar en JavaScript
  9. Hashmap en Java
  10. Comparable en Java Ejemplo | Interfaz de colección en Java