Arreglo de Objetos y Ordenamiento Arreglos-1
Arreglo de Objetos y Ordenamiento Arreglos-1
Arreglo de Objetos y Ordenamiento Arreglos-1
Introducción
Arreglo de Objetos
Para manipular arreglo de objetos en lenguaje Java, hay que cumplir los
siguientes pasos:
Vec
vec = new Alumno [4]; //crea el arreglo con lugar para 4 referencias
Vector de referencias
Vec
3. Crear los objetos: crear cada objeto alumno y asignarle la referencia en algún lugar del
arreglo. Por ejemplo, podremos creamos todos los objetos juntos en un ciclo:
Página-2-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
Vector de referencias
Vec
Objetos Alumno
4. Manipular los objetos: Acceder a cada objeto invocando algún método. Por ejemplo,
podremos invocar al método toString():
Usando la clase alumno, crear una clase ListadoAlumnos que maneje varios alumnos. Se pide
la realización de los siguientes métodos:
a. Constructores.
b. cargarAlumno(int indice, Alumno a)
c. toString()
d. BorrarAlumno(int legajo)
e. PromedioGeneral()
f. MayorPromedio()
Implementación.
Codificación en Java
//Alumno.java
public Alumno()
{
legajo = 0;
nombre = "";
Página-3-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
promedio = 0;}
legajo = l;
nombre = n;
promedio = p; }
//ListadoAlumnos.java
class ListaAlumno
{ private Alumno vec[]; //Atributo.
public ListaAlumno(int n)
{
vec=new Alumno[n];
for(int i=0; i<n;i++)//No obligatorio…
vec[i]=null;
}
for(int i=0;i<vec.length;i++)
if(vec[i]!=null)
if(leg==vec[i].getLegajo())
{
vec[i]=null;
b=true;
break;
Página-4-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
return b;
}
return(p/vec.length);
}
//Aplicación.java
System.out.println(a.toString());//forma de mostrar el
arreglo que contiene los alumnos.
Página-5-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
if(a.BorrarAlumno(valorLeg)==true)
{ System.out.println(“Se pudo borrar el alumno!”);}
else
{ System.out.println(“NO pudo borrar el alumno!”);}
¿Qué es ordenamiento?
Ejemplos de ordenamientos:
Dir. Telefónico, tablas de contenido, bibliotecas y diccionarios, etc.
El ordenar un grupo de datos significa mover los datos o sus referencias para que queden en
una secuencia tal que represente un orden, el cual puede ser numérico, alfabético o incluso
alfanumérico, ascendente o descendente.
Tipos de ordenamientos:
Los 2 tipos de ordenamientos que se pueden realizar son: los internos y los externos.
Los internos:
Son aquellos en los que los valores a ordenar están en memoria principal, por lo que se
asume que el tiempo que se requiere para acceder cualquier elemento sea el mismo (a[1],
a[500], etc).
Los externos:
Son aquellos en los que los valores a ordenar están en memoria secundaria (disco, cinta,
cilindro magnético, etc), por lo que se asume que el tiempo que se requiere para acceder a
cualquier elemento depende de la última posición accesada (posición 1, posición 500, etc).
Página-6-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
Algoritmos de ordenamiento:
Internos:
Inserción directa.
Inserción directa.
Inserción binaria.
Selección directa.
Selección directa.
Intercambio directo.
Burbuja.
Shake.
Ordenamiento de árbol.
Heap.
Tournament.
Sort particionado.
Quick sort.
Merge sort.
Radix sort.
Cálculo de dirección.
Externos:
Straight merging.
Natural merging.
Balanced multiway merging.
Polyphase sort.
Distribution of initial runs.
El hecho de que la información esta ordenada, nos sirve para poder encontrarla y accesarla
de manera más eficiente ya que de lo contrario se tendrá que hacer de manera secuencial.
A continuación se describirán 4 grupos de algoritmos para ordenar información:
Algoritmos de inserción:
En este tipo de algoritmo los elementos que van a ser ordenados son considerados uno a la
vez. Cada elemento es INSERTADO en la posición apropiada con respecto al resto de los
elementos ya ordenados.
Entre estos algoritmos se encuentran el de INSERCION DIRECTA, SHELL SORT, INSERCION
BINARIA y HASHING.
Algoritmos de intercambio:
Página-7-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
Algoritmos de selección:
Algoritmos de enumeración:
En este tipo de algoritmos cada elemento es comparado contra los demás. En la comparación
se cuenta cuántos elementos son más pequeños que el elemento que se esta analizando,
generando así una ENUMERACION. El número generado para cada elemento indicará su
posición.
El que usaremos para dar un cierto orden a los elementos contenidos en un arreglo es el de
selección directa.
Método de Selección.
El algoritmo de selección directa en Java, para un arreglo que almacena tipos de datos
primitivos, por ejemplo arreglo que almacena valores numéricos:
}
}
}
}
Página-8-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
}
}
}
}
Si quisiéramos ordenar el arreglo los alumnos por nombre (en orden ascendente), el
algoritmo de selección directa en lenguaje Java tendría la siguiente modificación:
}
}
}
}
En este caso la variante del algoritmo con respecto al anterior, es la inclusión del método
compareTo, incluido en clase String y que nos facilita la comparación de cadenas de
caracteres.
Página-9-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
Búsqueda Binaria
La búsqueda binaria sólo se puede implementar si el arreglo está ordenado. La idea consiste
en ir dividiendo el arreglo en mitades. Por ejemplo supongamos que tenemos este arreglo:
Por ejemplo:
Si la clave no fuese encontrada en algún momento Izq > Der, con un while vamos a
controlar esta condición para salir del ciclo en tal caso y devolver -1 (clave no encontrada).
if(band==1)
Página-10-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
Página-11-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
Codificación en Java.
//Planta.java
public class Planta
{ //Atributos.
private String nombre;
private int tipo;
private int cant;
private int stock;
private float precio;
//Métodos.
public Planta()
{ nombre="";
tipo=0;
cant=0;
stock=0;
precio=0;}
Página-12-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
//Vivero.java
public class Vivero
{//Atributos
private String razonS;
private String dir;
private Planta p[];
//Metodos de control.
public float TotalStock()
{ float acu=0;
for(int i=0;i<p.length;i++)
acu=acu+p[i].getCantidad();
Página-13-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
return acu;
}
//Aplicación.java
public class Aplicacion
{ public static void main(String args[])
{ //Declaración de varaibles auxiliares.
String r,d,nom;
Vivero v;
Planta pl;
int cant,t,c,s;
double p;
//Cargo los datos del vivero
System.out.println("Ingrese la razon social:");
r=In.readLine();
System.out.println("Ingrese la direccion:");
d=In.readLine();
System.out.println("Ingrese cantidad de plantas:");
cant=In.readInt();
Página-14-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
for(int i=0;i<cant;i++)
{ //Creo un obj. planta
System.out.println("Ingrese nombre:");
nom=In.readString();
System.out.println("Ingrese tipo:");
t=In.readInt();
System.out.println("Ingrese cantidad:");
c=In.readInt();
System.out.println("Ingrese stock:");
s=In.readInt();
System.out.println("Ingrese precio:");
p=In.readDouble();
pl = new Planta(nom, t, c, s, p);
v.setPlanta(i,pl);
}
3. Desarrollar una clase que permita representar a los empleados, de una importante
empresa de nuestro medio.
Cada instancia de esta clase, debe contener los siguientes datos: legajo, nombre, área
que trabaja (1- Administración 2-Recepción 3-Otro) y sueldo.
Se pide:
Página-15-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
Se pide:
El software requiere, el uso de una estructura que permita almacenar las mascotas. Se
deberá cargar el número n de mascotas, por teclado.
Se pide:
a) Diagrama de Clases.
b) Informar la cantidad de mascotas registradas en la veterinaria, por especie.(3
totales)
c) Informar los datos de la mascota de menor edad, cuya especie sea perro.
d) Informar el nombre de la mascota de mayor edad.
Página-16-
Algoritmos y Estructuras de Datos Curso: 1K7-1K8
Ing. Cynthia Corso.
Bibliografía Consultada.
Página-17-