una por palabra ordenar matriz letras como columnas burbuja arreglo archivo alfabeticamente java arrays sorting

java - por - Ordenar la matriz int en orden descendente



ordenar una matriz en java burbuja (4)

Posible duplicado:
Ordenar matrices de tipos primitivos en orden descendente
Java: ¿Cómo ordenar una matriz de flotadores en orden inverso?
¿Cómo puedo invertir una matriz int en Java?

El siguiente código ordenará la matriz en orden ascendente :

int a[] = {30,7,9,20}; Arrays.sort(a); System.out.println(Arrays.toString(a));

Necesito ordenarlo en orden descendente . ¿Cómo uso Comparator para hacer esto?

Por favor ayuda.


Para tipos de matriz primitivos, debería escribir un algoritmo de clasificación inversa:

Alternativamente, puede convertir su int[] a Integer[] y escribir un comparador:

public class IntegerComparator implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } }

o use Collections.reverseOrder() ya que solo funciona en tipos de matriz no primitivos.

y finalmente,

Integer[] a2 = convertPrimitiveArrayToBoxableTypeArray(a1); Arrays.sort(a2, new IntegerComparator()); // OR // Arrays.sort(a2, Collections.reverseOrder()); //Unbox the array to primitive type a1 = convertBoxableTypeArrayToPrimitiveTypeArray(a2);


Si no es una matriz grande / larga, simplemente duplícala:

for( int i = 0; i < arr.length/2; ++i ) { temp = arr[i]; arr[i] = arr[arr.length - i - 1]; arr[arr.length - i - 1] = temp; }


Guava tiene un método Ints.asList() para crear una List<Integer> respaldada por una matriz int[] . Puede usar esto con Collections.sort para aplicar el Comparador a la matriz subyacente.

List<Integer> integersList = Ints.asList(arr); Collections.sort(integersList, Collections.reverseOrder());

Tenga en cuenta que este último es una lista en vivo respaldada por la matriz real, por lo que debe ser bastante eficiente.


Comparator<Integer> comparator = new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2.compareTo(o1); } }; // option 1 Integer[] array = new Integer[] { 1, 24, 4, 4, 345 }; Arrays.sort(array, comparator); // option 2 int[] array2 = new int[] { 1, 24, 4, 4, 345 }; List<Integer>list = Ints.asList(array2); Collections.sort(list, comparator); array2 = Ints.toArray(list);