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<imo 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<ima 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 <ima+ # (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