Ordenamiento de arreglos con la clase Arrays
Pues bien, esta vez vamos a tratar uno de los temas típicos, en lo que a la programación se refiere, y me refiero al ordenamiento de arreglos. Esto no solo es un paso más en el desarrollo de la lógica, cuando estamos aprendiendo, sino una herramienta muy útil en el campo de la programación.Ahora bien, a nosotros nos enseñan los métodos típicos de ordenamiento de arreglos (arrays o vectores, como quieran llamarlo), como lo son el Burbuja, el Quicksort, etc. Pero hay una clase de la API de utlierías de Java (java.util) que nos facilita esto, y es la clase Arrays. Y utilizandola es fácil ordenar un arreglo, con tan solo una instrucción.
La clase Arrays proporciona métodos (funciones) estáticos para manipular arreglos. Estos métodos son de alto nivel, como el sort para ordenar un arreglo, binarySearch para buscar en un arreglo ordenado, equals para comparar arreglos y fill para colocar valores en un arreglo. Y además estos métodos se sobrecargan para los tipos primitivos de arreglos (int, double, etc.) y para los arreglos Object (String, JPanel, Jbutton, etc.).
Para que todo esto quede claro vamos a realizar un fácil ejemplo:
import java.util.*;
public class UsoArrays {
private int numerosEnteros[] = { 1, 2, 3, 4, 5, 6 };
private double numerosDouble[] = { 8.4, 9.3, 0.2, 7.9, 3.4 };
private int llenoEnteros[], copiaNumerosEnteros[];
// inicializar los arreglos
public UsoArrays()
{
llenoEnteros = new int[ 10 ];
copiaNumerosEnteros = new int[ numerosEnteros.length ];
Arrays.fill( llenoEnteros, 7 ); // llenar con 7s
Arrays.sort( numerosDouble ); // ordenar numerosDouble en forma ascendente
// copiar el arreglo numerosEnteros en el arreglo copiaNumerosEnteros
System.arraycopy( numerosEnteros, 0, copiaNumerosEnteros, 0, numerosEnteros.length );
}
// mostrar los valores en cada arreglo
public void imprimirArreglos()
{
System.out.print( "numerosDouble: " );
for ( int cuenta = 0; cuenta <numerosDouble.length; cuenta++)
System.out.print( numerosDouble[ cuenta ] + " " );
System.out.print( "\nnumerosEnteros: " );
for ( int cuenta = 0; cuenta <numerosEnteros.length; cuenta++)
System.out.print( numerosEnteros[ cuenta ] + " " );
System.out.print( "\nllenoEnteros: " );
for ( int cuenta = 0; cuenta <llenoEnteros.length; cuenta++)
System.out.print( llenoEnteros[ cuenta ] + " " );
System.out.print( "\ncopiaNumerosEnteros: " );
for ( int cuenta = 0; cuenta <copiaNumerosEnteros.length; cuenta++)
System.out.print( copiaNumerosEnteros[ cuenta ] + " " );
System.out.println();
} // fin del método imprimirArreglos
// comparar el contenido de los arreglos
public void imprimirIgualdad()
{
boolean b = Arrays.equals( numerosEnteros, copiaNumerosEnteros );
System.out.println( "numerosEnteros " + ( b ? "==" : "!=" ) +
" copiaNumerosEnteros" );
b = Arrays.equals( numerosEnteros, llenoEnteros );
System.out.println( "numerosEnteros " + ( b ? "==" : "!=" ) +
" llenoEnteros" );
}
public int buscarUnEntero(int x)
{
return Arrays.binarySearch(numerosEnteros, x);
}
public static void main( String args[] )
{
UsoArrays usoArrays = new UsoArrays();
usoArrays.imprimirArreglos();
usoArrays.imprimirIgualdad();
int ubicacion = usoArrays.buscarUnEntero( 5 );
System.out.println( ( ubicacion >= 0 ? "Se encontro el 5 en el elemento " +
ubicacion : "No se encontro el 5" ) + " en numerosEnteros" );
ubicacion = usoArrays.buscarUnEntero( 8763 );
System.out.println( ( ubicacion >= 0 ? "Se encontro el 8763 en el elemento " +
ubicacion : "No se encontro el 8763" ) + " en numerosEnteros" );
}
} // fin de la clase UsoArrays;
En este sencillo ejemplo, se muestra el uso del método:
-
Arrays.fill(): que recibe un como argumentos un arreglo, y el valor con el que se va a rellenar el mismo.
-
Arrays.sort(): que recibe como argumento un arreglo, que será ordenado ascendentemente.
-
System.arraycopy(): que recibe 5 argumentos. El primer argumento (valoresEnteros) es el arreglo a partir del cual se van a copiar los elementos; el segundo argumento (0) es el índice que especifica el punto de inicio en el rango de elementos que se van a copiar del arreglo; este valor puede ser cualquier índice de arreglo válido. El tercer argumento (copiaNumerosEnteros) especifica el arreglo de destino que almacenará la copia. El cuarto argumento (0) especifica el índice en el arreglo de destino, en donde deberá guardarse el primer elemento copiado. El último argumento especifica el numero de elementos a copiar del arreglo en el primer argumento. En este caso copiaremos todos los elementos en el arreglo.
-
Arrays.equals(): este método recibe como argumentos dos arreglos que serán comparados, y que retorna un valor boolean como resultado de la comparación. true si son iguales, false en caso contrario… si, ya se que es obvio, pero es que hay gente que… en fin.
Aunque me salí un poco del tema principal (ordenamiento de arreglos), creo que la esencia del mismo queda más que comprendida. Solo agregar que si hasta ahora estás aprendiendo a programar, es mejor que implementes los métodos de ordenamiento a mano, es decir, empleando la lógica y utilizando instrucciones como for, if, else, etc. ya que no tendría gracia utilizar estos métodos sin siquiera tener un poco de experiencia… esta API la implementaron para hacernos las cosas más fáciles, pero no abuses.Saludos!!!
15 Comentarios | deja el tuyo





Diosssssssss! que fácil lo pones! es increible, pase horas buscando esto y en un segundo lei y ENTENDI TODO y me parece super facil………Gracias!!!!
RAYOS!!! -.-’
trate de correr el ejmeplo tuyo de arrays
en NetBEans 5.5 para una tarea
y pues me salen errores
en las lineas de “for”
para la otra podrias poner
ejemplos q ya nu tengan
erores plx
atte…
paw
si puedes contestarme:
garyta7@hotmail.com
JEje, lo que pasa es que se dañó el programa… me imagino que con la nueva version del Blogger….
El problema es que los for tenian signos < y pues Blogger los confunde con etiquetas HTML...
En breve lo soluciono
Solucionado!!!
hola que tal mira tengo un problema me dejaron un projecto es acer un sistema con PEPS osea primeras entradas y primeras salidas, la neta no se como le are pues no entiendo en si que es lo que el sistma debe hacer porfis ayudame mi correo es pajarito_leo@hotmail.com espero tu ayuda si puedes gracias
PEPS…Primero en Entrar Primero en Salir…(llenar un arreglo y luego vaciarlo desde el primero que se ingreso)
bueno, quisiera saber como ordenar un arreglo en java,utilizando NetBeans, el arreglo contiene pares de coordenadas para poder formar un pologon.
les agradeceria mucho su ayuda
jaja , me podrias ser un poco mas claro de lo que quieres dar a entender , sabeeeeeeeeeeeeeeeeeeees trate de ejecutar el programa y me envia error.
by.
que osoooooooooooooooooooooo.
busco un programa en java usando el metodo shell porfavor quien lo epueda aser por favor en viame en mi msn
ola alguen me diria que aser el jCreator cuando lo ejecuto me aroja un error y dice esto:
Your system clock appears to have been changed, possibly in an attempt to defeat the security system on this program. Please correct your system clock before trying to run this program again. If your clock is already correct, rebooting the system may fix this problem, otherwise contact the author of this program for instructions (report code CCB-A).
si alguien sabe que aser ,me ayudaria mucho
hola quisiera que me ayudaran a crear un problema con arreglos en java como por ejemplo ingresar 15 numeros desde teclado y que me muestre los numeros menores k 10.
hola quisiiera hacer un programa que aga una agenda donde este el nombre ,apellidos,direccion,telefono y correo electronico, pero que en el nombre solo acepte letras y en el telefono solo numeros y en el correo que tenga necesariamente gmailo hotmail.o yahoo porfas como le ago
hola podrias ayudarme con una tarea de progra necesito imprimir las columnas pares de un arreglo en java netbeans ayudame pleace este es el ejemplo :
int i,j;
int a[][]={{0,0,0,0,0,0,0,0,0,0},
{0,8,0,9,9,0,4,0,3,5},
{0,0,1,0,0,0,0,4,0,0},
{0,0,6,0,2,0,7,0,8,0},
{0,0,2,8,5,0,3,9,4,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,3,4,7,0,8,5,1,0},
{0,0,1,0,4,0,6,0,9,6},
{0,0,0,7,0,0,0,0,6,3},
{0,6,9,0,3,0,1,0,5,4}};
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
System.out.print(a[i][j]);
System.out.print(" ");
}
System.out.println("");
}
aqui les dejo unos ejemplitos
link de descarga:
http://depositfiles.com/files/4h29nqdp7
o bien
http://hotfile.com/dl/97307976/a843918/metodos_de_ordenamientos.rar.html
son metodos de ordenamiento de burbuja, insercion y seleccion