You are on page 1of 10

Ordenando en un Arreglo de Objetos

La ordenacin en un arreglo de Objetos es algo que ayuda mucho en el manejo de la


informacin. Existen varios algoritmos de ordenacin que se pueden utilizar, dependiendo de
las necesidades.
El ms sencillo que manejaremos aqu! es el de "urbuja.
En este algoritmo se utiliza un ciclo anidado en el que la primera variable i, empieza desde el
valor # $ el primer elemento del arreglo% y llega hasta el pen&ltimo elemento $n'(% que ser!a,
y la segunda variable j, empieza desde un numero mas que la i y se va aumentando hasta
llegar a ser igual a n $el ultimo elemento%.
En cada iteracin se compara el valor a ordenar $dentro del objeto% de la posicin i con
respecto a la posicin j, de tal manera que en la primer barrida $ciclo de i% toma el elemento
mas peque)o y lo deja en ultima posicin, en la segunda barrida, toma el siguiente ms
peque)o de los que quedaron y lo deja en la pen&ltima posicin y as! sucesivamente.
Observemos el algoritmo y despu*s el ejemplo+
for $int i,#- i . n'(- i// % 0
for $int j,i/(- j.n- j//% 0
if $valor1i2 3 valor1j2% 0
temp , valor1i2-
valor1i2 , valor1j2-
valor1j2 , temp-
4
4
4
Ejemplo.
5i tenemos el arreglo conformado por los n&meros
(6# (7 (87 (6 9 #
5e compara (6# y (7 y se voltean
(7 (6# (87 (6 9 #
5e compara (7 y (87 y no hay cambio
(7 (6# (87 (6 9 #
5e compara (7 y (6 y se voltean
(6 (6# (87 (7 9 #
:::. ;esarrollo de aplicaciones con manejo
de datos en la memoria
5e compara (6 y 9 y se voltean
9 (6# (87 (7 (6 #
5e compara 9 y # y se voltean
# (6# (87 (7 (6 9
En esta primera vuelta el # queda como primer elemento. <hora i vale ( y se contin&a con el
ciclo de adentro, comparando desde la posicin ( en el arreglo hasta la &ltima+
# (6# (87 (7 (6 9
5e comparan (6# y (87 y se quedan igual
# (6# (87 (7 (6 9
5e comparan (6# y (7 y se voltean
# (7 (87 (6# (6 9
5e comparan (7 y (6 y se voltean
# (6 (87 (6# (7 9
5e comparan (6 y 9 y se voltean
# 9 (87 (6# (7 (6
En esta segunda vuelta el 9 queda en la segunda posicin y ahora continuamos con la tercera
vuelta+
# 9 (87 (6# (7 (6
# 9 (6# (87 (7 (6
# 9 (7 (87 (6# (6
# 9 (6 (87 (6# (7
En la tercera vuelta el (6 queda en la tercera posicin, continuamos+
# 9 (6 (87 (6# (7
# 9 (6 (6# (87 (7
# 9 (6 (7 (87 (6#
En la cuarta vuelta el (7 queda en la posicin =, continuamos+
# 9 (6 (7 (87 (6#
# 9 (6 (7 (6# (87
En la quinta y ultima vuelta se compararon el (6# y el (87 y se cambian y ya queda
automticamente el arreglo ordenado.
>eamos la clase ?uenta y la aplicacin con el algoritmo pero expuesto en el arreglo de
objetos.
Clase Cuenta
public class ?uenta 0
private 5tring nombre- @@ nombre del cliente
private int numero- @@ numero de la cuenta
private double saldo- @@ saldo de la cuenta

@@ m*todo para construir una cuenta vac!a
public ?uenta$% 0
nombre , AB-
numero , #-
saldo , #.#d-
4

@@ m*todo para construir una cuenta con valores
public ?uenta$int numero, 5tring nombre, double saldo% 0
this.nombre , nombre-
this.numero , numero-
this.saldo , saldo-
4

@@ m*todo que te d el nombre de la cuenta
public 5tring obtenCombre$% 0
return nombre-
4

@@ m*todo que te d el n&mero de la cuenta
public int obtenCumero$% 0
return numero-
4

@@ m*todo que te d el saldo de una cuenta
public double obten5aldo$% 0
return saldo-
4

@@ m*todo que sirve para cambiar el valor del nombre
public void cambiaCombre$5tring nombre% 0
this.nombre , nombre-
4
@@ m*todo que sirve para cambiar el valor del saldo
public void cambiaCumero$int numero% 0
this.numero , numero-
4
@@ m*todo que sirve para cambiar el valor del saldo
public void cambia5aldo$double saldo% 0
this.saldo , saldo-
4

@@ m*todo para depositar
public void deposita$double cantidad% 0
cambia5aldo$obten5aldo$% / cantidad%-
4

@@ m*todo para retirar
public boolean retira$double cantidad% 0
if $cantidad ., obten5aldo$%% 0
cambia5aldo$obten5aldo$% ' cantidad%-
return true-
4
return false-
4
4
Clase de la Aplicacin
import java.io.D-
public class <plicacion<rrObjeto6 0
private static ?uenta arreglo12-
@@ para pedir los valores de teclado de el arreglo de cuentas ya creada
public static void pideEarreglo$% throFs :OException0
"ufferedGeader in ,
neF "ufferedGeader$neF :nput5treamGeader$5ystem.in%%-

int n-
int numero-
5tring nombre-
double saldo-
5ystem.out.println$HI?uantos objetos deseas crearJH%-
n , :nteger.parse:nt$in.readLine$%%-

@@ creamos el arreglo de cuentas
arreglo , neF ?uenta1n2-

@@ pedimos cada valor para crear un objeto cuenta
for $int i,#- i.n- i//% 0
5ystem.out.print$H;a el numero de la cuenta H / $i/(%/ H + H%-
numero , :nteger.parse:nt$in.readLine$%%-
5ystem.out.print$H;a el nombre de la cuenta H / $i/(%/ H + H%-
nombre , in.readLine$%-
5ystem.out.print$H;a el saldo de la cuenta H / $i/(%/ H + H%-
saldo , ;ouble.parse;ouble$in.readLine$%%-
@@ se crea el objeto de la clase ?uenta como elemento del arreglo
arreglo 1i2 , neF ?uenta$numero, nombre, saldo%-
4
4
@@ para desplegar los datos del arreglo de cuentas
public static void despliegaEarreglo$% 0
5ystem.out.println$HCumero Combre 5aldoH%-
for $?uenta objeto + arreglo% 0
5ystem.out.println$H H / objeto.obtenCumero$% / H H /
objeto.obtenCombre$% / H H / objeto.obten5aldo$%%-
4
4
@@ obteniendo la suma de los saldos de todas las cuentas
public static double suma$% 0
double total , #.#d-
for $?uenta objeto + arreglo% 0
total /, objeto.obten5aldo$%-
4
return total-
4
@@ para calcular el promedio de la matriz cualquiera que sea
public static double promedio$% 0
double total , #.#d-
for $?uenta objeto + arreglo% 0
total /, objeto.obten5aldo$%-
4
return total@arreglo.length-
4
@@ pedir un saldo y desplegar que tienen un saldo mayor o igual
public static void despliegaEsaldos$% throFs :OException0
"ufferedGeader in ,
neF "ufferedGeader$neF :nput5treamGeader$5ystem.in%%-

5ystem.out.println$HI<rriba de cual saldoJH%-
double saldo , ;ouble.parse;ouble$in.readLine$%%-

@@ buscamos en cada objeto ?uenta del arreglo
for $?uenta objeto + arreglo% 0
if $objeto.obten5aldo$% 3, saldo% 0
5ystem.out.println$H Combre H / objeto.obtenCombre$% /
H ?uenta H / objeto.obtenCumero$% /
H 5aldo H / objeto.obten5aldo$%%-
4
4
4
@@ ordenamos el arreglo en base al numero de cuenta
public static void ordena$% throFs :OException0

for $int i,#- i . arreglo.length'(- i// % 0
for $int j,i/(- j.arreglo.length- j//% 0
if $arreglo1i2.obtenCumero$% 3 arreglo1j2.obtenCumero$%% 0
?uenta temp , arreglo1i2-
arreglo1i2 , arreglo1j2-
arreglo1j2 , temp-
4
4
4
4
public static void main$5tring12 args% throFs :OException 0
char opcion-
"ufferedGeader in ,
neF "ufferedGeader$neF :nput5treamGeader$5ystem.in%%-
arreglo , null-
opcion , K K-
Fhile $opcion L, KMK% 0
5ystem.out.println$H Nenu de ?uentasH%-
5ystem.out.println$%-
5ystem.out.println$H(. Oedir datos para crear ?uentasH%-
5ystem.out.println$H6. ;esplegar todas las cuentasH%-
5ystem.out.println$H8. ;esplegar 5uma de los saldosH%-
5ystem.out.println$H=. ;esplegar Oromedio de los saldosH%-
5ystem.out.println$H7. ;esplegar ?uentas arriba de un 5aldoH%-
5ystem.out.println$HP. ;esplegar ?uentas arriba de un 5aldoH%-
5ystem.out.println$HM. QinH%-
5ystem.out.println$HIOpcion deseada $('M% JH%-
opcion , in.readLine$%.char<t$#%-
sFitch $opcion% 0
case $K(K% +
5ystem.out.println$HOidiendo datos arreglo ?uentasH%-
pideEarreglo$%-
5ystem.out.println$H H / arreglo.length%-
breaR-
case $K6K% +
5ystem.out.println$H;esplegando arreglo de ?uentasH%-
despliegaEarreglo$%-
breaR-
case $K8K% +
5ystem.out.println$H5uma de los saldos , H / suma$%%-
breaR-
case $K=K% +
5ystem.out.println$HOromedio de los saldos , H / promedio$%%-
breaR-
case $K7K% +
5ystem.out.println$H;esplegando ?uentas arriba de saldoH%-
despliegaEsaldos$%-
breaR-
case $KPK% +
5ystem.out.println$HOrdenando ?uentas por numeroH%-
ordena$%-
breaR-
case $KMK% +
5ystem.out.println$HSasta LuegoLH%-
breaR-
default+
5ystem.out.println$HOpcion debe ser de ( a 7H%-
breaR-
4-

4
4
4
Entre lo que despliega esta aplicacin tenemos
Opcin (.'
Opcin 6.'
Opcin 8.'
Opcin =.'
Opcin 7.'
Opcin P.'
Oara corroborar que se ordeno usamos la opcin 6 de nuevo
T finalmente opcin M

You might also like