Arrays.Sort() - Collections.reverseOrder()
Para
ordenar arrays de cualquier tipo Java dispone del método sort de la
clase Arrays.
Para
utilizarlo es necesario incluir el import:
import java.util.Arrays;
Por
ejemplo, dado el siguiente array de Strings:
String [] nombres = {"juan", "pedro", "ana", "maria", "felipe", "luis", "eduardo"};
para
ordenarlo de forma ascendente escribiremos la instrucción:
Arrays.sort(nombres);
Si
mostramos el array por pantalla, comprobaremos que está ordenado de
forma ascendente:
for(String s : nombres)
System.out.println(s);
Arrays.sort
ordena de forma ascendente (de menor a mayor). Para ordenar un array
de forma descendente (de mayor a menor) hay que indicarlo utilizando
el método reverseOrder() de la clase Collections.
Para
utilizar reverseOrder es
necesario incluir el import:
import java.util.Collections;
Por
ejemplo, para ordenar el array nombres de forma descendente
escribimos la instrucción Arrays.sort de la siguiente forma:
Arrays.sort(nombres, Collections.reverseOrder());
También
tenemos la opción de ordenar solo una parte del array, indicando la
posición del elemento inicial y la del elemento final (que no se
incluye en la ordenación).
Por
ejemplo, para ordenar solo los elementos 1, 2 y 3 ("pedro",
"ana", "maria") del
array nombres escribimos la instrucción de
esta forma:
Arrays.sort(nombres, 1, 4);
El
1 indica la posición del elemento donde comienza la ordenación y el
4 indica la posición del primer elemento
que no entra en la ordenación.
El
contenido del array después de esta ordenación es el siguiente:
juan
ana
maria
pedro
felipe
luis
eduardo
vemos
que solo se han ordenado los elementos 1, 2 y 3. El resto quedan
igual:
También
podemos ordenar solo una parte del array en orden inverso. Por
ejemplo, para ordenar solo los elementos 1,
2 y 3 en orden inverso:
Arrays.sort(nombres, 1,4, Collections.reverseOrder());
El
contenido del array es ahora:
juan
pedro
maria
ana
felipe
luis
eduardo
Con Arrays.sort podemos
ordenar arrays de cualquier tipo de datos. Por ejemplo, para ordenar
un array de enteros:
int [] numeros = {3, 5, 1, 2, 1, 7, 0, -1};
Arrays.sort(numeros);
//mostrarlo ordenado
for (int n : numeros) {
System.out.println(n);
}
Collections.reverOrder()
solo funciona para arrays de objetos. Por este motivo si queremos
ordenar de forma descendente arrays de tipos de datos simples debemos
utilizar la clase envolvente equivalente al tipo de dato básico.
Puedes ver las clases envolventes que corresponden a cada tipo de
dato en esta entrada.
Por ejemplo, para
ordenar un array de enteros forma descendente hay que declararlo de
tipo Integer en lugar de int.
Integer [] numeros = {3, 5, 1, 2, 1, 7, 0, -1};
Arrays.sort(numeros, Collections.reverseOrder());
for (int n : numeros) {
System.out.println(n);
}
Excelente, Mil gracias, lo estaba haciendo como Int , así como Integer funciona perfecto !
ResponderEliminario estava en la pisara quando lo bi vailando por aih grasias 1s quantos salu2
Eliminarhola
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarimport java.io.*;
ResponderEliminarpublic class Ordenar {
public static void main(String[]args)throws IOException{
int i,n;
BufferedReader br;
br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Cuantos numeros va a ingresar :");
n=Integer.parseInt(br.readLine());
System.out.println("Usted ingresara " + n + " numeros");
int datos[]= new int[n];
System.out.println("Ingrese los numeros :" );
for(i=0;i<n;i++){
datos[i]=Integer.parseInt(br.readLine()); }
for(i=0;i<n-1;i++) {
int min=i;
for(int j=i+1;j<n;j++) {
if(datos[j]<datos[min]) {
min=j;}
}
if(i!=min){
int aux =datos[i];
datos[i]=datos[min];
datos[min] = aux;}
}
System.out.println("Los numeros de menor a manor son :");
for(int k=0; k<n;k++)
System.out.print(datos[k] + " ");
}
}
Tienes una lista desordenada con N números distintos los cuales tienen valores entre 0 y M. Llamemos al primer número de esta lista a0. Debes ordenar los números de la lista y ver en qué posición queda el número a0.
ResponderEliminarEn este problema la primera posición de la lista es la posición 0 y la última es la posición N−1.
Problema
Escribe un programa que dada la lista de N números determine en qué posición queda el elemento a0 (el primero de la lista) después que ésta se ordena.
Entrada
Tu programa debe leer del teclado la siguiente información:
En la primera línea el número entero N, la cantidad de números en la lista.
En la segunda línea los N números de la lista separados cada uno por un espacio.
Salida
Tu programa debe escribir en la pantalla un único número entero que representa la posición final del elemento a0 en la lista ordenada.
solo me falta encontrar la posicion de a0 una ayudita porfa
package Tuto;
ResponderEliminarimport java.io.*;
public class TUTO2{
public static void main (String [] args)
throws IOException
{
BufferedReader bf=new BufferedReader (new InputStreamReader (System.in));
String snota;
int nota[]=new int [8];
int k;
int a,menor,pmenor;
for(a=0;a<=7;a++){
System.out.println(" posicion ["+a+"] ingrese el elemento "+(a+1));
snota=bf.readLine();
nota[a]=Integer.parseInt(snota);
}
System.out.println("VECTOR NOTAS");
for(a=0;a<=7;a++)
{
System.out.print(" ["+a+"]"+nota[a]);
}
//menor
menor=nota[0];
pmenor=0;
for(a=1;a<=7;a++)
{
if(menor>=nota[a])
{
menor=nota[a];
pmenor=a;
}
}
System.out.println("\nel nota menor es \t"+menor);
System.out.println(" la posicion del menor es "+pmenor);
}
}
como hago para prdenar las notas de forma ascendente
Increíble, realmente es mucho mejor que el método burbuja para enteros. Mil gracias, estaba intentando con int el metodo collection, pero al cambiarlo a Integer funcionó correctamente.
ResponderEliminarHacer un programa que pida tres números enteros y los imprima ordenados de mayor a menor
ResponderEliminarescribi bien , flaco
ResponderEliminarbusco programadora que me ayude que respire (opcional)
ResponderEliminar