Está en la página 1de 39

lOMoARcPSD|6246918

Separata Unidad 2 AED - ARREGLOS UNIDIMENSIONALES


I, ARREGLOS UNIDIMENSIONAL II, ARREGLOS
UNIDIMENSIONAL
Algoritmos (Universidad Nacional del Callao)

Studocu no está patrocinado ni avalado por ningún colegio o universidad.


Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)
lOMoARcPSD|6246918

Separata preparada para el desarrollo del curso de:

Algoritmos y Estructura de Datos

Segunda Unidad Temática:


Operaciones con Arreglos Unidimensionales

Semestre: 2015-II

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

INDICE
SEGUNDA UNIDAD TEMATICA
OPERACIONES CON ARREGLOS UNIDIMENSIONALES

QUINTA SEMANA

MARCO TEORICO
OPERACIONES CON ARREGLOS UNIDIMENSIONALES I
Sumar, promediar, hallar máximo, y mínimo de los valores cargados en el
arreglo………. ………………………………………………………………………….. 2

MARCO PRÁCTICO
Actividades…………………………………………………….…………………………

SEXTA SEMANA

MARCO TEORICO
OPERACIONES CON ARREGLOS UNIDIMENSIONALES II
Insertar los datos en un arreglo unidimensional…………..….………………….… 12
Modificar los datos en un arreglo unidimensional………..….………………….… 12
Eliminar los datos en un arreglo unidimensional………..….………………….… 13
Buscar datos en un arreglo unidimensional………..………………………….… 14

MARCO PRÁCTICO
Actividades……………………………………………………………………………… 16

SÉPTIMA SEMANA

MARCO TEORICO
OPERACIONES CON ARREGLOS UNIDIMENSIONAL III
Mostrar los elementos comunes entre dos arreglos unidimensionales………… 18
Unir los datos de dos arreglos en un tercer arreglo……….…….………………… 19

MARCO PRÁCTICO
Actividades…………………………..………………………………………………… 20

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

CUARTA SEMANA

MARCO TEORICO
Métodos de la Burbuja…….………………….……………………………….……… 21
Método del ordenamiento por inserción………………………….………….……… 24
Método del ordenamiento por inserción………………………….………….……… 24

MARCO PRÁCTICO
Actividades………………………………………………………………………… 28

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 4

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 5

QUINTA SEMANA – Marco Teórico

Logro
El alumno aprenderá a operacionalizar los datos contenidos en el arreglo.

Resumen
Las operaciones básicas con los datos numéricos de un arreglo
unidimensional es: Sumar, Promediar, hallar máximo, hallar mínimo.

OPERACIONES CON ARREGLOS UNIDIMENSIONALES I

Caso Práctico: Realizar una aplicación Java que utilice POO, Estructura de
Datos Estáticas (Arreglos) que realice las siguientes operaciones básicas con los
arreglos, tales como: Sumar, Promediar, hallar máximo, hallar mínimo.

Logica de Negocios
Para desarrollar este caso utilizaremos la clase Arreglos, dentro de la cual
implementaremos los métodos que se detallan en esta unidad. Hasta el momento
nuestra clase Arreglos contiene lo siguiente:

package Semana6;

public class Arreglos {


//Propiedades
public double[] ventas;

public void cargardatos(double dato,int pos){


ventas[pos]=dato;
}

public String mostrarTodoslosDatos(int n){


String acu="";
int i;
for(i=0;i<=n-1;i++){
acu=acu+"Posicion "+i+" : "+ventas[i]+"\n";
}
return acu;
}

public Arreglos(){ //Método constructor

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 6

//Se ejecuta cuando ocurre una instancia


ventas=new double[100];
}
}

Lógica de Presentación
Para desarrollar este caso utilizaremos el formulario frmArreglos, cuyo diseño se
presenta en el siguiente gráfico.

Para esta unidad hemos mejorado algunas cosas con relación a la semana
anterior.

Carga de datos
Ahora la carga de datos se realiza automáticamente, Ud. ingresará el dato en la
caja y luego al hacer un ENTER el dato quedará registrado y se mostrará en la
caja txtlista, para este fin se programado el siguiente código en el evento
actionperformaced de la caja txtdato.

private void txtdatoActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
n++;
obj.cargardatos(Double.parseDouble(txtdato.getText()),n-1);
mostrardatos();
txtdato.setText("");
txtdato.grabFocus();
//Invocar a los metodos
txtmax.setText(String.valueOf(obj.maximo(n)));
txtpro.setText(String.valueOf(obj.promedio(n)));
txtmin.setText(String.valueOf(obj.minimo(n)));
txttotal.setText(String.valueOf(obj.sumar(n)));
}

Método mostrardatos()
Este método se encuentra dentro del formulario y sirve para visualizar los datos
del arreglo, en la caja txtlista.

public void mostrardatos(){


txtlista.setText(obj.mostrarTodoslosDatos(n));
}

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 7

Sumar los datos de un arreglo unidimensional


Para sumar los datos de un arreglo unidimensional:
- Se deberá recorrer todos los datos del arreglo (Usar la estructura FOR)
- Dentro de la estructura repetitiva, acumular cada uno de los datos del
arreglo en una variable acumulador numérica.
- Retornar el valor acumulado en la variable numérica.

Método Sumar (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: double
Argumentos que recibe: Longitud del arreglo (n)

public double sumar(int n){


double acu;
int i;
acu=0;

//recorre el arreglo
for(i=0;i<=n-1;i++){
acu=acu+ventas[i]; //Acumulador
}
return acu;
}

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 8

Invocar la acción Sumar


(Agregarlo en el evento actionperformanced de la caja txtdato)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txttotal.setText(String.valueOf(obj.sumar(n)));

Promediar los datos de un arreglo unidimensional


Para promediar los datos de un arreglo unidimensional:
- Se deberá recorrer todos los datos del arreglo (Usar la estructura FOR)
- Dentro de la estructura repetitiva, acumular cada uno de los datos del
arreglo en una variable acumulador numérica.
- Luego de terminar la estructura repetitiva, divida el valor acumulado entre
los cantidad de elemento que contiene el arreglo
- Retornar el valor obtenido en el paso anterior.

Método Promediar (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: double
Argumentos que recibe: Longitud del arreglo (n)

public double promedio(int n){


double acu,pro;
int i;
acu=0;
for(i=0;i<=n-1;i++){
acu=acu+ventas[i];
}
pro=acu/n;
return pro;
}

Invocar la acción Promediar


(Agregarlo en el evento actionperformanced de la caja txtdato)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtpro.setText(String.valueOf(obj.promedio(n)));

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 9

Hallar el valor máximo de los datos contenidos en un arreglo


unidimensional
Para hallar el valor máximo de los datos contenidos en un arreglo
unidimensional:
- Se debe tomar hipotéticamente que el primer dato del arreglo es el mayor.
- Se deberá recorrer el arreglo desde la segunda posición hasta la última
posición. Esto permitirá evaluar cada uno de los datos del arreglo. (Usar
la estructura FOR)
- Dentro de la estructura repetitiva, preguntar si el supuesto mayor es
menor que el dato evaluado.
- Si se cumple lo anterior, entonces ese dato evaluado se convertiría en el
nuevo mayor, de lo contrario pasamos a evaluar el siguiente dato.
- Luego de terminar la estructura repetitiva, retornar el último valor obtenido
en la variable mayor

Método Mayor (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: double
Argumentos que recibe: Longitud del arreglo (n)

public double maximo(int n){


double b;
int i;
b=0;
i=0;
for(i=0;i<=n;i++){
if (ventas[i]>b){
b=ventas[i];
}
}
return b;
}

Invocar la acción Maximo


(Agregarlo en el evento actionperformanced de la caja txtdato)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtmax.setText(String.valueOf(obj.maximo(n)));

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 10

Hallar el valor mínimo de los datos contenidos en un arreglo


unidimensional
Para hallar el valor mínimo de los datos contenidos en un arreglo unidimensional:
- Se debe tomar hipotéticamente que el primer dato del arreglo es el menor.
- Se deberá recorrer el arreglo desde la segunda posición hasta la última
posición. Esto permitirá evaluar cada uno de los datos del arreglo. (Usar
la estructura FOR)
- Dentro de la estructura repetitiva, preguntar si el supuesto menor es
mayor que el dato evaluado.
- Si se cumple lo anterior, entonces ese dato evaluado se convertiría en el
nuevo menor, de lo contrario pasamos a evaluar el siguiente dato.
- Luego de terminar la estructura repetitiva, retornar el último valor obtenido
en la variable menor.

Método Menor (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: double
Argumentos que recibe: Longitud del arreglo (n)

public double minimo(int n){


double min;
int i;
min=999999999;
for(i=0;i<=n-1;i++){
if (ventas[i]<min){
min=ventas[i];
}
}
return min;
}

Invocar la acción Mínimo


(Agregarlo en el evento actionperformanced de la caja txtdato)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtmin.setText(String.valueOf(obj.minimo(n)));

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 11

QUINTA SEMANA – Marco Práctico

TRABAJO PRÁCTICO 1

Objetivo del Trabajo:


Que el alumno se ejercite en la construcción de métodos que permitan realizar
operaciones básicas con arreglos unidimensionales.

Utilizando la metodología aprendida en clase, construya los métodos para


resolver los siguientes requerimientos e invóquelos desde la Lógica de
Presentación:

- Mostrar la cantidad de elementos pares.


- Mostrar la cantidad de elementos impares.
- Llenar el arreglo ventas con los primeros n valor de la siguiente serie:
12,24,48,96,192, …
- Llenar el arreglo ventas con los primeros n valor de la siguiente serie:
35, 28, 21, 14, 7 …
Nota: Siempre el último valor debe ser 7

 Esfuérzate por hacer tu mismo este trabajo, es importante que lo


compruebes en Java. No olvidar que se entrega el informe de este trabajo
en un folder y también el disquete o CD. (Leer forma de presentación
según aparece en la Diapositiva de la Semana 1).

 Si alguno de sus compañeros no tiene esta guía de práctica, reenvíenlo a
su correo.

Fecha de Entrega: Segunda clase de la semana 6

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 12

SEXTA SEMANA – Marco Teórico

Logro
El alumno aprenderá a realizar las operaciones de edición con los
datos de un arreglo unidimensional.

Resumen
Las operaciones de edición son: Insertar, Modificar, Eliminar, Buscar,
etc.

Operaciones con Arreglos Unidimensionales II


Caso Práctico: Realizar una aplicación Java que utilice POO, Estructura de
Datos Estáticas (Arreglos) que realice las siguientes operaciones básicas con los
arreglos, tales como: Insertar, Modificar, Eliminar, Buscar, etc.

Lógica de Presentación
Para desarrollar este caso utilizaremos el formulario frmArreglos, cuyo diseño se
presenta en el siguiente gráfico.

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 13

Insertar los datos en un arreglo unidimensional


Para insertar datos en un arreglo unidimensional:
- Se solicitará la posición en donde desee insertar.
- Incrementar la longitud del arreglo en una posición.
- Luego se procederá a transferir los elementos una posición hacia la
derecha, comenzando desde el último elemento hasta la posición donde
se desea insertar.
- Solicitar el nuevo dato y almacenarlo en la posición señalada por el
usuario.

Método Insertar (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: void
Argumentos que recibe: Posición, dato y longitud

public void insertar(int pos,double dato,int n){


int i;
for(i=n-1;i>pos;i--){
ventas[i]=ventas[i-1]; //Transferir el elemento
}
ventas[pos]=dato; //Posicionar el nuevo dato

Invocar la acción Insertar


(Agregarlo en el evento actionperformanced del botón Insertar)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

int pos=Integer.parseInt(JOptionPane.showInputDialog("¿En que posición desea insertar el nuevo dato?"));


double dato=Double.parseDouble(JOptionPane.showInputDialog("Ingrese el dato a insertar"));
n++;
obj.insertar(pos, dato, n);
mostrardatos();
txtmax.setText(String.valueOf(obj.maximo(n)));
txtpro.setText(String.valueOf(obj.promedio(n)));
txtmin.setText(String.valueOf(obj.minimo(n)));
txttotal.setText(String.valueOf(obj.sumar(n)));

Modificar los datos en un arreglo unidimensional


Para modificar datos en un arreglo unidimensional:
- Se solicitará la posición en donde desee modificar.
- Luego se procederá almacenar el nuevo dato en la posición indicada,
sobrescribiendo al dato anterior.

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 14

- Mostrar los datos del arreglo nuevamente

NOTA: Para la operación modificar se utilizará el método cargardatos, que fue


explicado en la semana anterior.

Invocar la acción Modificar


(Agregarlo en el evento actionperformanced del botón Insertar)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

int pos=Integer.parseInt(JOptionPane.showInputDialog("¿Qué posición desea modificar?"));

if(pos<=n-1){
double dato=Double.parseDouble(JOptionPane.showInputDialog("Ingrese el nuevo dato"));
obj.cargardatos(dato,pos);
mostrardatos();}
else{
JOptionPane.showMessageDialog(null,"No existe esa posición");
}
txtmax.setText(String.valueOf(obj.maximo(n)));
txtpro.setText(String.valueOf(obj.promedio(n)));
txtmin.setText(String.valueOf(obj.minimo(n)));
txttotal.setText(String.valueOf(obj.sumar(n)));

Eliminar los datos en un arreglo unidimensional


Para eliminar los datos en un arreglo unidimensional:
- Se solicitará la posición del elemento que se desea eliminar.
- Decrementar la longitud del arreglo en una posición.
- Luego se procederá a transferir los elementos una posición hacia la
izquierda, comenzando desde la posición a eliminar hasta la penúltima
posición
- Volver a mostrar los datos del arreglo

Método Eliminar (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: void
Argumentos que recibe: Posición y longitud

public void eliminar(int pos,int n){


int i;
for (i=pos;i<=n-2;i++){
ventas[i]=ventas[i+1];
}
}

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 15

Invocar la acción Eliminar


(Agregarlo en el evento actionperformanced del botón Eliminar)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

int pos=Integer.parseInt(JOptionPane.showInputDialog("¿Qué posición desea eliminar?"));


if(pos<=n-1){
obj.eliminar(pos,n);
n--;
mostrardatos();}
else{
JOptionPane.showMessageDialog(null,"No existe esa posición");
}

txtmax.setText(String.valueOf(obj.maximo(n)));
txtpro.setText(String.valueOf(obj.promedio(n)));
txtmin.setText(String.valueOf(obj.minimo(n)));
txttotal.setText(String.valueOf(obj.sumar(n)));

Buscar datos en un arreglo unidimensional


Para buscar los datos en un arreglo unidimensional:
- Ingresar el dato que se desea buscar
- Comparar el dato ingresado con cada uno de los datos del arreglo.
- Si el dato ha sido hallado mostrar la posición donde se encontró a dicho
dato.

Método Buscar (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: String
Argumentos que recibe: longitud

public String buscar(int n,double numer){


int i,a;
a=0;
String acu="";
String b="";
for(i=0;i<=n-1;i++){
if(ventas[i]==numer){
acu=acu+"El dato se encuentra en la Posición "+i+"\n";
a++;
}
}
if(a>0){
return acu;
}
else {
return "Lo sentimos, el dato no ha sido encontrado...";
}
}

Invocar la acción Buscar

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 16

(Agregarlo en el evento actionperformanced del botón Buscar)


Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtlista2.setText(obj.buscar(n));

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 17

SEXTA SEMANA – Marco Práctico

TRABAJO PRÁCTICO 2

Objetivo del Trabajo:


Que el alumno se ejercite en la construcción de métodos que permitan realizar
operaciones básicas con arreglos unidimensionales.

Utilizando la metodología aprendida en clase, construya los métodos para


resolver los siguientes requerimientos e invóquelos desde la Lógica de
Presentación:
 Insertar n datos al final del arreglo
 Insertar n datos a partir de una posición
 Rotar los elementos del arreglo, donde el primer elemento pasa a la siguiente
posición y así sucesivamente , y el último pasa al primero.
 Reemplazar un dato por otro, considere que dicho dato puede repetirse varias
veces en el arreglo.
 Invertir el contenido de un arreglo (es decir el primer elemento pasa a la última
posición, el segundo pasa a la penúltima posición y así sucesivamente)
 Buscar el mayor elemento dentro un intervalo del arreglo (se deberá ingresar el índice
inferior y superior donde se realizará la búsqueda).
 Eliminar los elementos repetidos de un arreglo
 Sustituir a todos los datos que son pares, por el mismo dato + 1
 Mostrar a todos los datos que son primos, indicando la posición donde se encuentran.
 Insertar un dato en la mitad del arreglo
 Mostrar un resumen de los datos contenidos dentro del arreglo, indique cuantas
veces se repite un dato dentro del arreglo. (No incluya el mismo dato dos veces).

Esfuérzate por hacer tu mismo este trabajo, es importante que lo compruebes en


Java. No olvidar que se entrega el informe de este trabajo en un folder y también
el disquete o CD. (Leer forma de presentación según aparece en la Diapositiva
de la Semana 1).
Si alguno de sus compañeros no tiene esta guía de práctica, reenvíenlo a su
correo.

Fecha de Entrega: Segunda clase de la semana 7

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 18

SÉPTIMA SEMANA – Marco Teórico

Logro
El alumno aprenderá a realizar operaciones con los datos de 2
arreglos unidimensionales.

Resumen
Las operaciones elementales que desarrollaremos son: mostrar
elementos comunes entre ambos, unir dos arreglos en un tercer
arreglo.

Operaciones con Arreglos Unidimensionales III


Caso Práctico: Realizar una aplicación Java que utilice POO, Estructura de
Datos Estáticas (Arreglos) que realice las siguientes operaciones con dos
arreglos, tales como: mostrar los elementos comunes de dos arreglos y unir dos
arreglos en uno tercera

Lógica de Presentación
Para desarrollar este caso utilizaremos el formulario frmArreglos, cuyo diseño se
presenta en el siguiente gráfico.

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 19

Mostrar los elementos comunes entre dos arreglos


unidimensionales
Para mostrar los elementos comunes entre dos arreglos unidimensionales:
- Recorrer el primer arreglo
- Dentro de cada posición del arreglo A, recorrer el arreglo B y preguntar si
el dato evaluado del arreglo A es igual que el dato que se evalúa en B, si
es si, almacenar el dato común dentro de una cadena.
- Al finalizar las estructuras repetitivas, mostrar la cadena que acumulo a los
datos comunes

Nota: Se debe tener en cuenta que se deben mostrar los datos comunes, sin que
algunos de estos se repita.

Método mostrarComunesUnicos (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: String
Argumentos que recibe: longitud del primer arreglo y longitud del segundo
arreglo.

public String mostrarComunesUnicos(int n,int nb){


int i,j;
String acu="";
nc=0;
for(i=0;i<=n-1;i++){
for(j=0;j<=nb-1;j++){
if(ventas[i]==ventasb[j]){
ventasc[nc]=ventas[i];
nc++;
}
}
}

eliminarRepetidosC();
return mostrarTodoslosDatosC();
}

Invocar la acción Mostrar Comunes


(Agregarlo en el evento actionperformanced del botón Insertar)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 20

txtlistaC.setText(obj.mostrarComunesUnicos(n, nb));

Unir los datos de dos arreglos en un tercer arreglo


Para unir los datos de dos arreglos en un tercer arreglo realizar lo siguiente:
- Recorrer el primer arreglo
- Enviar cada dato del arreglo A hacia el arreglo C, conservando la mismo
posición original
- Recorrer el segundo arreglo.
- Enviar cada dato del arreglo B hacia el arreglo C, comenzando desde la
posición n+i

Método unirArreglos (Agregarlo en la clase Arreglos)


Tipo de dato que retorna como respuesta: String
Argumentos que recibe: longitud del primer arreglo y longitud del segundo
arreglo.

public String unirArreglos(int n,int nb){


int i,j;
nc=n+nb; //La nueva longitud del 3er arreglo
for(i=0;i<=n-1;i++){
ventasc[i]=ventas[i];
}
for(j=0;j<=nb-1;j++){
ventasc[j+n]=ventasb[j];
}
return mostrarTodoslosDatosC();
}

Invocar la acción unirArreglos


(Agregarlo en el evento actionperformanced del botón Unir Arreglo)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtlistaC.setText(obj.unirArreglos(n, nb));

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 21

SÉPTIMA SEMANA – Marco Práctico

TRABAJO PRÁCTICO 3

Objetivo del Trabajo:


Que el alumno se ejercite en la construcción de métodos que permitan realizar
operaciones básicas con arreglos unidimensionales.

Utilizando la metodología aprendida en clase, construya los métodos para


resolver los siguientes requerimientos e invóquelos desde la Lógica de
Presentación:

A. Mostrar los datos que no son comunes entre ambos arreglos


B. Mostrar los datos de A-B (Solo los datos de A sin incluir comunes, ni los datos de B)
C. Mostrar los datos de B-A (Solo los datos de B sin incluir comunes, ni los datos de A)
D. Intercambiar los datos del arreglo A hacia el arreglo B

Nota:
 Esfuérzate por hacer tu mismo este trabajo, es importante que lo COMPRUEBES
en Java. No olvidar que se entrega el informe de este trabajo en un folder y
también el disquete o CD. (Leer forma de presentación según aparece en la
Diapositiva de la Semana 1).
 Si alguno de sus compañeros no tiene esta guía de práctica, reenvíenlo a su correo.

Fecha de Entrega: Segunda clase de la semana 8

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 22

OCTAVA SEMANA – Marco Teórico

Logro
Que el alumno comprenda y aplique los diferentes metodos de
ordenamiento que existen.

Resumen
Durante esta semana aprenderemos en que consisten los métodos
de ordenamiento de la burbuja y el método de ordenamiento por
inserción.

Métodos de Ordenamiento I

MÉTODO DE LA BURBUJA

Este método consiste en ordenar el arreglo moviendo el dato mayor hasta la


última posición, comenzando desde la casilla cero del arreglo hasta haber
enviado el número más grande a la última posición, una vez acomodado el más
grande, prosigue a encontrar y acomodar el siguiente más grande comparando
de nuevo los números desde el inicio del arreglo, y así sigue hasta ordenar todo
los elementos del arreglo.

Ventajas:
Es el método de ordenamiento más utilizado, porque es el más sencillo de
comprender.

Desventajas:
Este algoritmo es muy deficiente ya que al ir comparando las casillas para buscar
el siguiente más grande, éste vuelve a comparar las ya ordenadas.

Caso Práctico: Realizar una aplicación Java que utilice POO, Estructura de
Datos Estáticas (Arreglos) que aplique el método de ordenamiento por burbuja.

Lógica de Presentación
Para desarrollar este caso utilizaremos el formulario frmArreglos, cuyo diseño se
presenta en el siguiente gráfico.

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 23

Método burbuja1 (Agregarlo en la clase Arreglos)

Tipo de dato que retorna como respuesta: String


Argumentos que recibe: longitud del arreglo.

public String burbuja1(int n){


int i,j;
double aux;

for(i=0;i<=n-2;i++){
for(j=0;j<=n-2;j++){
if(ventas[j]>ventas[j+1]){
aux=ventas[j];
ventas[j]=ventas[j+1];
ventas[j+1]=aux;
}
}
}
return mostrarTodoslosDatos(n);
}

Invocar la acción Burbuja1


(Agregarlo en el evento actionperformanced del botón Burbuja1)

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 24

Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtlista.setText(obj.burbuja1(n));

Método burbuja2 (Agregarlo en la clase Arreglos)

Tipo de dato que retorna como respuesta: String


Argumentos que recibe: longitud del arreglo.

public String burbuja2(int n){


int i,j;
double aux;

for(i=0;i<=n-2;i++){
for(j=0;j<=n-i-2;j++){
if(ventas[j]>ventas[j+1]){
aux=ventas[j];
ventas[j]=ventas[j+1];
ventas[j+1]=aux;
}
}
}
return mostrarTodoslosDatos(n);
}

Invocar la acción Burbuja2


(Agregarlo en el evento actionperformanced del botón Burbuja2)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtlista.setText(obj.burbuja2(n));

Método burbuja3 (Agregarlo en la clase Arreglos)

Tipo de dato que retorna como respuesta: String


Argumentos que recibe: longitud del arreglo.

public String burbuja3 (int n) {


boolean bandera=false;
double aux;

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 25

int k;
while (bandera==false) {
bandera=true;
for(k=0; k<=n-2;k++){
if(ventas[k]>ventas[k+1]){
aux=ventas[k];
ventas[k]=ventas[k+1];
ventas[k+1]=aux;
bandera=false;
}

}
return mostrarTodoslosDatos(n);
}

Invocar la acción Burbuja3


(Agregarlo en el evento actionperformanced del botón Burbuja3)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtlista.setText(obj.burbuja3(n));

MÉTODO DE LA ORDENAMIENTO POR INSERCIÓN

El ordenamiento por inserción (insertion sort en inglés) es una manera muy


natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar
un mazo de cartas numeradas en forma arbitraria. Inicialmente se tiene un solo
elemento, que obviamente es un conjunto ordenado. Después, cuando hay k
elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara
con todos los elementos ya ordenados, deteniéndose cuando se encuentra un
elemento menor (todos los elementos mayores han sido desplazados una
posición a la derecha). En este punto se inserta el elemento k+1 debiendo
desplazarse los demás elementos.

Ventajas:
- Fácil implementación.
- Requerimientos mínimos de memoria.

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 26

Desventajas:
- Lento.
- Realiza numerosas comparaciones

Caso Práctico: Realizar una aplicación Java que utilice POO, Estructura de
Datos Estáticas (Arreglos) que aplique el método de ordenamiento por inserción.

Lógica de Presentación
Para desarrollar este caso utilizaremos el formulario frmArreglos, cuyo diseño se
presenta en el siguiente gráfico.

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 27

MÉTODO INSERCIÓN1 (Agregarlo en la clase Arreglos)

Tipo de dato que retorna como respuesta: String


Argumentos que recibe: longitud del arreglo.

public String insercion1(int n) {


int i, k;
double aux;
for (i = 1; i <= n - 1; i++) {
aux = ventas[i];
k = i - 1;
boolean sw = false;
while (!(sw) && (k >= 0)) {
if (aux < ventas[k]) {
ventas[k + 1] = ventas[k];
k = k - 1;
} else {
sw = true;
}
}
ventas[k + 1] = aux;
}
return mostrarTodoslosDatos(n);
}

Invocar la acción Inserción1


(Agregarlo en el evento actionperformanced del botón Inserción1)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtlista.setText(obj.insercion1(n));

MÉTODO INSERCIÓN2 (Agregarlo en la clase Arreglos)

Tipo de dato que retorna como respuesta: String


Argumentos que recibe: longitud del arreglo.

public String insercion2(int n) {


int i, k, c, u, p = 0;

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 28

double aux;
for (i = 1;i<=n-1;i++ ){
aux=ventas[i];
u=i-1;
while (p <= u) {
c = (p + u) / 2;
if (aux < ventas[c]) {
u = c - 1;
} else {
p = c + 1;
}
}
for (k = i - 1; k >= p; k--) {
ventas[k + 1] = ventas[k];
}

ventas[p] = aux;
}
return mostrarTodoslosDatos(n);
}

Invocar la acción Inserción2


(Agregarlo en el evento actionperformanced del botón Inserción2)
Para mostrar el resultado, se deberá invocar el método de la siguiente manera:

txtlista.setText(obj.insercion2(n));

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 29

OCTAVA SEMANA – Marco Práctico

Construye los diagramas de flujo de cada uno de los métodos de ordenamiento


que se han estudiado durante de esta semana y detalla minuciosamente el
recorrido del algoritmo. Asuma datos hipotéticos para el arreglo.

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 30

BIBLIOGRAFIA

Autor Titulo Edición Año


Luis Fundamentos de
Joyanes Programación. Algoritmos y Cuarta Edición 2006
Aguilar Estructura de Datos
Osvaldo
Estructuras de Datos Segunda Edición 2006
Cairó
Robert Fundamentos de
Pantigoso Programación: Algoritmos y Segunda Edición 2007
Silva Diagramas de Flujo

IV. AUTOEVALUACION PARA LA UNIDAD

1. Detalle la carga de datos


2. Cuál es el código que nos permite sumar los datos de un arreglo
3. Explique el algoritmo que permite sumar los datos de un arreglo
4. Cuál es el código que nos permite promediar los datos de un arreglo
5. Explique el algoritmo que permite promediar los datos de un arreglo
6. Cuál es el código que nos permite hallar el valor máximo de un arreglo
7. Explique el algoritmo que permite hallar el valor máximo de un arreglo
8. Cuál es el código que nos permite hallar el valor mínimo de un arreglo
9. Cuál es el código que nos permite insertar datos dentro de un arreglo
10. Cuál es el código que nos permite modificar datos dentro de un arreglo
11. Cuál es el código que nos permite eliminar un dato dentro de un arreglo
12. Cuál es el código que nos permite buscar un dato dentro de un arreglo
13. Cuál es el código que nos permite visualizar los datos comunes entre dos
arreglos.
14. Cuál es el código que nos permite unir los datos de dos arreglos.
15. Explique cómo funciona el método de la Burbuja
16. Indique cuales son las ventajas del método de la burbuja
17. Indique cuales son las desventajas del método de la burbuja
18. Cuál es el código del método de la burbuja 1
19. Cuál es el código del método de la burbuja 2
20. Cuál es el código del método de la burbuja 3
21. Explique cómo funciona el método de la Inserción
22. Indique cuales son las ventajas del método de la inserción
23. Indique cuales son las desventajas del método de la inserción
24. Cuál es el código del método de inserción 1
25. Cuál es el código del método de inserción 2

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 31

V. RESOLUCION DEL CUESTIONARIO

1. Detalle la carga de datos


private void btnCargarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
double dato;
int i;
n=Integer.parseInt(JOptionPane.showInputDialog("¿Cuántos datos desea ingresar?"));

for(i=0;i<=n-1;i++){
dato=Double.parseDouble(JOptionPane.showInputDialog("Introduzca dato para ventas["+i+"]"));
obj.cargardatos(dato, i);
}
}

2. Cuál es el código que nos permite sumar los datos de un arreglo

public double sumar(int n){


double acu;
int i;
acu=0;

//recorre el arreglo
for(i=0;i<=n-1;i++){
acu=acu+ventas[i]; //Acumulador
}
return acu;
}

3. Explique el algoritmo que permite sumar los datos de un arreglo


Para sumar los datos de un arreglo unidimensional:
- Se deberá recorrer todos los datos del arreglo (Usar la estructura FOR)
- Dentro de la estructura repetitiva, acumular cada uno de los datos del
arreglo en una variable acumulador numérica.
- Retornar el valor acumulado en la variable numérica.

4. Cuál es el código que nos permite promediar los datos de un arreglo


public double promedio(int n){
double acu,pro;
int i;
acu=0;
for(i=0;i<=n-1;i++){
acu=acu+ventas[i];
}
pro=acu/n;

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 32

return pro;
}
5. Explique el algoritmo que permite promediar los datos de un arreglo

Para promediar los datos de un arreglo unidimensional:


- Se deberá recorrer todos los datos del arreglo (Usar la estructura FOR)
- Dentro de la estructura repetitiva, acumular cada uno de los datos del
arreglo en una variable acumulador numérica.
- Luego de terminar la estructura repetitiva, divida el valor acumulado entre
los cantidad de elemento que contiene el arreglo
- Retornar el valor obtenido en el paso anterior.

6. Cuál es el código que nos permite hallar el valor máximo de un arreglo

public double maximo(int n){


double b;
int i;
b=0;
i=0;
for(i=0;i<=n;i++){
if (ventas[i]>b){
b=ventas[i];
}
}
return b;
}

7. Explique el algoritmo que permite hallar el valor máximo de un arreglo


Para hallar el valor máximo de los datos contenidos en un arreglo
unidimensional:
- Se debe tomar hipotéticamente que el primer dato del arreglo es el mayor.
- Se deberá recorrer el arreglo desde la segunda posición hasta la última
posición. Esto permitirá evaluar cada uno de los datos del arreglo. (Usar
la estructura FOR)
- Dentro de la estructura repetitiva, preguntar si el supuesto mayor es
menor que el dato evaluado.
- Si se cumple lo anterior, entonces ese dato evaluado se convertiría en el
nuevo mayor, de lo contrario pasamos a evaluar el siguiente dato.
- Luego de terminar la estructura repetitiva, retornar el último valor obtenido
en la variable mayor

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 33

8. Cuál es el código que nos permite hallar el valor mínimo de un arreglo


public double minimo(int n){
double min;
int i;
min=999999999;
for(i=0;i<=n-1;i++){
if (ventas[i]<min){
min=ventas[i];
}
}
return min;
}

9. Cuál es el código que nos permite insertar datos dentro de un arreglo


public void insertar(int pos,double dato,int n){
int i;
for(i=n-1;i>pos;i--){
ventas[i]=ventas[i-1]; //Transferir el elemento
}
ventas[pos]=dato; //Posicionar el nuevo dato

10. Cuál es el código que nos permite modificar datos dentro de un arreglo
int pos=Integer.parseInt(JOptionPane.showInputDialog("¿Qué posición desea modificar?"));

if(pos<=n-1){
double dato=Double.parseDouble(JOptionPane.showInputDialog("Ingrese el nuevo dato"));
obj.cargardatos(dato,pos);
mostrardatos();}
else{
JOptionPane.showMessageDialog(null,"No existe esa posición");
}
txtmax.setText(String.valueOf(obj.maximo(n)));
txtpro.setText(String.valueOf(obj.promedio(n)));
txtmin.setText(String.valueOf(obj.minimo(n)));
txttotal.setText(String.valueOf(obj.sumar(n)));

11. Cuál es el código que nos permite eliminar un dato dentro de un arreglo
public void eliminar(int pos,int n){
int i;
for (i=pos;i<=n-2;i++){
ventas[i]=ventas[i+1];
}

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 34

12. Cuál es el código que nos permite buscar un dato dentro de un arreglo
public String buscar(int n){
int i,a;
a=0;
String acu="";
String b="";
double numer=Double.parseDouble(JOptionPane.showInputDialog("Ingrese el numero: "));

for(i=0;i<=n-1;i++){
if(ventas[i]==numer){
acu=acu+"El dato se encuentra en la Posición "+i+"\n";
a++;
}
}
if(a>0){
return acu;
}
else {
return "Lo sentimos, el dato no ha sido encontrado...";
}
}

13. Cuál es el código que nos permite visualizar los datos comunes entre dos
arreglos.

public String mostrarComunesUnicos(int n,int nb){


int i,j;
String acu="";
nc=0;
for(i=0;i<=n-1;i++){
for(j=0;j<=nb-1;j++){
if(ventas[i]==ventasb[j]){
ventasc[nc]=ventas[i];
nc++;
}
}
}

eliminarRepetidosC();
return mostrarTodoslosDatosC();
}

14. Cuál es el código que nos permite unir los datos de dos arreglos.
public String unirArreglos(int n,int nb){

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 35

int i,j;
nc=n+nb; //La nueva longitud del 3er arreglo
for(i=0;i<=n-1;i++){
ventasc[i]=ventas[i];
}
for(j=0;j<=nb-1;j++){
ventasc[j+n]=ventasb[j];
}
return mostrarTodoslosDatosC();
}

15. Explique cómo funciona el método de la Burbuja


Este método consiste en ordenar el arreglo moviendo el dato mayor hasta la
última posición, comenzando desde la casilla cero del arreglo hasta haber
enviado el número más grande a la última posición, una vez acomodado el
más grande, prosigue a encontrar y acomodar el siguiente más grande
comparando de nuevo los números desde el inicio del arreglo, y así sigue
hasta ordenar todo los elementos del arreglo.

16. Indique cuales son las ventajas del método de la burbuja


Es el método de ordenamiento más utilizado, porque es el más sencillo de
comprender.

17. Indique cuales son las desventajas del método de la burbuja


Este algoritmo es muy deficiente ya que al ir comparando las casillas para
buscar el siguiente más grande, éste vuelve a comparar las ya ordenadas.

18. Cuál es el código del método de la burbuja 1


public String burbuja1(int n){
int i,j;
double aux;

for(i=0;i<=n-2;i++){
for(j=0;j<=n-2;j++){
if(ventas[j]>ventas[j+1]){
aux=ventas[j];
ventas[j]=ventas[j+1];
ventas[j+1]=aux;
}
}

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 36

}
return mostrarTodoslosDatos(n);
}

19. Cuál es el código del método de la burbuja 2

public String burbuja2(int n){


int i,j;
double aux;

for(i=0;i<=n-2;i++){
for(j=0;j<=n-i-2;j++){
if(ventas[j]>ventas[j+1]){
aux=ventas[j];
ventas[j]=ventas[j+1];
ventas[j+1]=aux;
}
}
}
return mostrarTodoslosDatos(n);
}

20. Cuál es el código del método de la burbuja 3


public String burbuja3 (int n) {
boolean bandera=false;
double aux;
int k;
while (bandera==false) {
bandera=true;
for(k=0; k<=n-2;k++){
if(ventas[k]>ventas[k+1]){
aux=ventas[k];
ventas[k]=ventas[k+1];
ventas[k+1]=aux;
bandera=false;
}

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 37

return mostrarTodoslosDatos(n);
}

21. Explique cómo funciona el método de la Inserción


public String insercion1(int n) {
int i, k;
double aux;
for (i = 1; i <= n - 1; i++) {
aux = ventas[i];
k = i - 1;
boolean sw = false;
while (!(sw) && (k >= 0)) {
if (aux < ventas[k]) {
ventas[k + 1] = ventas[k];
k = k - 1;
} else {
sw = true;
}
}
ventas[k + 1] = aux;
}
return mostrarTodoslosDatos(n);
}

22. Indique cuales son las ventajas del método de la inserción


Fácil implementación.
Requerimientos mínimos de memoria.

23. Indique cuales son las desventajas del método de la inserción


- Lento.
- Realiza numerosas comparaciones

24. Cuál es el código del método de inserción 1


public String insercion1(int n) {
int i, k;
double aux;
for (i = 1; i <= n - 1; i++) {
aux = ventas[i];
k = i - 1;

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)


lOMoARcPSD|6246918

Universidad Nacional del Callao Pág. 38

boolean sw = false;
while (!(sw) && (k >= 0)) {
if (aux < ventas[k]) {
ventas[k + 1] = ventas[k];
k = k - 1;
} else {
sw = true;
}
}
ventas[k + 1] = aux;
}
return mostrarTodoslosDatos(n);
}

25. Cuál es el código del método de inserción 2


public String insercion2(int n) {
int i, k, c, u, p = 0;
double aux;
for (i = 1;i<=n-1;i++ ){
aux=ventas[i];
u=i-1;
while (p <= u) {
c = (p + u) / 2;
if (aux < ventas[c]) {
u = c - 1;
} else {
p = c + 1;
}
}
for (k = i - 1; k >= p; k--) {
ventas[k + 1] = ventas[k];
}

ventas[p] = aux;
}
return mostrarTodoslosDatos(n);
}

Descargado por BRUCE LLANOS (U18103144@UTP.EDU.PE)

También podría gustarte