Está en la página 1de 21

FACULTAD DE INGENIERÍA Y

CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

PROYECTO GRUPAL – PRIMERA ENTREGA

PRIMER BLOQUE – ESTRUCTURA DE DATOS GRUPO 1

Ejercicios de implementación Java

GRUPO DE TRABAJO

RICARDO GOMEZ
Tutor

INSTITUCION UNIVERSITARIA POLITECNICO GRAN COLOMBIANO


FACULTAD DE INGENIERÍA Y CIENCIAS BÁSICAS
BOGOTÁ D.C.
2020

CONTENIDO

INTRODUCCION.............................................................................................3

1. OBJETIVOS...............................................................................................4

1
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

2. DESARROLLO DEL TRABAJO………………………………………….5-19

3. CONCLUSION……………………………………………………………….20

4. BIBLIOGRFIA…………………………………………………………………21

INTRODUCCIÓN

2
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

Este ejercicio académico sirve para desarrollar las competencias necesarias en el Lenguaje

de programación JAVA, el pensamiento de un programador y estructuración de una

mentalidad analítica y abierta a la solución de problemas a los cuales se enfrentan en la

cotidianidad de la vida y en especial de nuestra profesión.

1. NOMBRE DEL TRABAJO

Ejercicios de implementación Java

3
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

2. OBJETIVOS

¿Qué se quiere lograr con el desarrollo del trabajo?

• Desarrollar dos ejercicios implementados en Java con el fin de desarrollar destrezas

en este lenguaje de programación.

• Efectuar la investigación sobre algoritmo de ordenamiento en burbuja.

3. DESARROLLO DEL TRABAJO

Desarrolle los siguientes ejercicios propuestos. Para el caso de los ejercicios que

requieren implementación en Java, usted deberá desarrollarlos en un archivo con

4
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

extensión .java. Para el caso de los ejercicios que no requieren implementación, usted

deberá desarrollarlos en un archivo con extensión .docx (de MS Word). Comprima

todos los archivos en un solo archivo de extensión .zip. Ese es el archivo que usted

debe entregar. Atención: asegúrese que el archivo .zip funciona y que incluye todos

los puntos desarrollados; si el archivo no funciona, la nota será cero; si faltan puntos

por desarrollar, la nota será penalizada.

1. Implemente en Java una función en lenguaje Java que, dado un arreglo de


enteros, A, y un número entero, n, calcule y retorne el número de ocurrencias de
n dentro de A.

Se desarrolla para que el numero seleccionado salga de manera automática y también


para que salga digitando el numero en el teclado del computador.

Primer Caso (Numero sale automático)

package ejercicio1;

public class ejemplo {

public static void main(string[ ] args) {

int [ ] arreglo = new int [7]

//Se crea un arreglo tipo entero de 7 posiciones

arreglo [0] = 1;
arreglo [1] = 2;
arreglo [2] = 3;
arreglo [3] = 4;
arreglo [4] = 5;

5
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

arreglo [5] = 6;
arreglo [6] = 7;

int valor = 5;
int contador = 0;
for (int i=0; i < 7; i++)
{
If (arreglo[i] == valor)

{
contador = contador + 1;
}
}
System.out.println( “El valor ; “ + valor + “se encuentra
“ + contador+ ” veces dentro del arreglo”);
}
}

Segundo Caso (Numero se debe digitar)

package ejemplo1;

public class ejercicio1 {

public static void main(String[] args) {

int[] arreglo = new int[9]; // Se crea un arreglo tipo entero


de 9 posiciones
arreglo[0] = 2;
arreglo[1] = 4;
arreglo[2] = 6;
arreglo[3] = 8;
arreglo[4] = 3;
arreglo[5] = 5;
arreglo[6] = 7;
arreglo[7] = 9;
arreglo[8] = 0;

6
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

int condicion = 0;

while(condicion==0)
{
try {

int valor = 0; // Crear una variable tipo entero con


el valor del que
se quiere saber la ocurrencia del arreglo
System.out.println("Ingrese el número que
desea buscar");

BufferedReader bf = new BufferedReader(new


InputStreamReader(System.in));
String op = bf.readLine();
valor = Integer.parseInt(op);
int contador = 0;// Crear una variable
tipo entero el cual va contar las veces que el valor de la
variable anterior
for (int i = 0; i < 9; i++) //For este recorre el
arreglo desde el valor 0 hasta 7 el cual corresponde al tamaño
asignado del arreglo
{
if (arreglo[i] == valor) // Este condicional
verifica si el valor que tiene el arreglo en la posicion
indicada
{
contador = contador + 1; // Si
se cumple entra y le suma 1 (Uno) a la varible contador
}
}
System.out.println("El valor: " + valor
+ " se encuentra " + contador + " veces dentro del arreglo");
} catch (Exception e) {
System.out.println("Asegurese de digitar un número de tipo
entero" + e);
}
}

7
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

}
}

Nota: Archivo con extensión .java se anexa al trabajo.

2. Investigue acerca del algoritmo de ordenamiento en burbuja y:

El algoritmo de la burbuja es uno de los métodos de ordenación más conocidos y uno de


los primeros que aprenden los programadores.

Consiste en comparar pares de elementos adyacentes en un array y si están en desorden


intercambiarlos hasta que estén todos ordenados.

8
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

Si A es el array a ordenar, se realizan A.length-1 pasadas. Si la variable i es la que cuenta el


número de pasadas, en cada pasada i se comprueban los elementos adyacentes desde el
primero hasta A.length-i-1 ya que el resto hasta el final del array están ya ordenados. Si los
elementos adyacentes están desordenados se intercambian.

a. Reproduzca un ejemplo (eso significa que usted debe seleccionar un conjunto de


números desordenado y mostrar paso a paso cuál es el efecto de aplicar el
algoritmo de burbuja sobre él).

El método de ordenación de la burbuja en java para ordenar un array A es el


siguiente:

El ordenamiento burbuja hace múltiples pasadas a lo largo de una lista. Compara

los ítems adyacentes e intercambia los que no están en orden. Cada pasada a lo largo

de la lista ubica el siguiente valor más grande en su lugar apropiado. En esencia, cada

ítem “burbujea” hasta el lugar al que pertenece.

En la siguiente figura trato de representar como en un conjunto

de números desordenados, al aplicar un algoritmo de burbuja, sería capaz de

ordenarlo, al realizar por cada pasada, una comparación de dos parejas de ítems (las

parejas sombreadas en azul), lo que tendría por objeto ver si no están en orden, de

manera que, si no están en orden, tomarían un orden con cada uno de

los ítems comparados. Para esto se toma en cuenta que, si hay n ítems en la lista,

entonces habrá n-1 parejas de ítems que habrán de compararse en la primera pasada.

Tras la mecánica de comparación de cada pareja de ítems tomada del conjunto

desordenado y una vez que el valor más grande de una pareja de ítems es

9
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

identificado, este valor (el más grande) avanza continuamente tomando el lugar de la

pareja comparada, esto hasta que la pasada se complete.

Para un caso práctico el conjunto de números desordenados que

escogeremos será {76,9,10,18,1,13,9,8,57,1,9,10,21,10} y gráficamente el ejemplo

se podría representarse para la primera pasada, así:

así encontramos al 76 en su lugar, tras la comparación con cada una de las parejas

de ítems señaladas en azul, hasta en un punto último, este ha avanzado

hasta a su posición final. Esta tabla señala en esencia lo que sucede en una primera

pasada. Pero es idéntico con cada pasada; solo que como es de notar al comienzo de

la segunda pasada, el valor más grande, ya está en su lugar, quedando solo por

10
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

ordenar n-1 ítems, o lo que también resultaría en que restaran n-2 parejas por

comparar y esto sucesivamente para cada una de las pasadas, hasta tener finalmente

un conjunto de ítems ordenados.

Condiciones a tener en cuenta en un ordenamiento de burbuja. Independientemente

de cómo están dispuestos los ítems (orden) en la lista inicial, se harán n-1 pasadas

como lo vimos en el caso anterior, esto para ordenar una lista de tamaño n. En este

caso la teoría señala que el número total de comparaciones será la suma de

los primeros n-1 enteros. Recordemos que la suma de los primero n-1 enteros es:

½ n2 + ½ n -n

o lo que es lo mismo:

½ n2 - ½ n.

Lo que para nuestro caso práctico seria 91 comparaciones

En la siguiente tabla se muestra la relación de comparaciones por el número de

pasadas (teniendo en cuenta que el número total de comparaciones será la suma de

los primeros n-1 enteros como se explicó con antelación)

11
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

Otro Ejemplo seria:

public static void burbuja(int[] A) {


int i, j, aux;
for (i = 0; i < A.length - 1; i++) {
for (j = 0; j < A.length - i - 1; j++) {
if (A[j + 1] < A[j]) {
aux = A[j + 1];
A[j + 1] = A[j];
A[j] = aux;
}
}
}

Ejemplo de ejecución:

12
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

Ya están ordenados, pero los dos bucles for seguirán ejecutándose hasta el final.

El tiempo de ejecución del algoritmo de la burbuja es del orden O(n2)

Es uno de los peores algoritmos de ordenación en cuanto a tiempo de

ejecución, solamente es recomendable su uso para ordenar listas con un número

pequeño de elementos.

b. Responda ¿En qué consistiría el peor caso y por qué implica una complejidad

algorítmica de O(n2)?

13
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

En el peor de los casos la complejidad de este algoritmo se ejecutaría en un tiempo creciente

en proporción directa con el cuadrado del tamaño del conjunto de entradas,

como siempre, para la notación se asume el máximo número de interacciones posibles.

En pocas palabras esto se traduce que en el peor de los casos implicaría que en

cada comparación se dé un intercambio de los valores y sus posiciones como se explicó en

el punto anterior. En cifras reales se darían 91 comparaciones y 91 posibles intercambios.

c. Implemente en Java una función que ordene un arreglo de números enteros

usando el algoritmo de burbuja.

public class MetodoDeLaBurbuja


{
public static int[] burbuja(int[] arreglo)
{
int auxiliar;
int[] arregloOrdenado;
for(int i = 2; i < arreglo.length; i++)
{
for(int j = 0;j < arreglo.length-i;j++)
{
if(arreglo[j] > arreglo[j+1])
{
auxiliar = arreglo[j];
arreglo[j] = arreglo[j+1];
arreglo[j+1] = auxiliar;
}
}

14
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

}
arregloOrdenado = arreglo;
return arregloOrdenado;
}
public static void main(String[] args)
{
//Valores que se toman como ejemplo para el arreglo
desordenado.
int arreglo[] = {76,9,10,18,1,13,9,8,57,1,9,10,21,10};
int arregloOrdenado[] = burbuja(arreglo);
//imprimimos el arreglo ordenado.
for(int i = 0; i
< arregloOrdenado.length;i++) System.out.println(
arregloOrdenado[i]);
}
}

3. Implemente una modificación en Java al método garantizarCapacidad que se

presentó en la lectura fundamental del escenario 3 para que no duplique la

cantidad de elementos; en su versión, el método debe agregar 20 espacios.

public class ArreglosSemana3 {

15
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

public class VEDArraylist<E> implements VEDList<E> {


//Declaración de clase

//Atributos de la clase
//Arreglo que contiene los elementos de la lista (inicia con
capacidad 1).
private Object[] arreglo =new Object [1];
//Tamaño de la lista(inicia en 0.
private int tamanho=0;

public E get (int index) {


// Obtener el elemento que esta en la posicion
index del arreglo:
Object elemento=arreglo [index];
E elemento2;
//Retornar el elemento obtenido, convertido al
tipo E por medio de un cast:
return (E)elemento2;
}
public E set(int index, E element) {
//Obtener el elemento que se encuentra en la
posicion index:
E anteriorValor=get (index);
// Modificar el elemento de la posicion index con
el valor del element:
arreglo [index] = element;
// Retornar el elemento que anteriormente se
encontraba en la posicion dada:
return anteriorValor;
}
private void garantizarcapacidad (int
nuevaCantidadDeElementos) {

//Si la nueva cantidad de elementos es menor o


igual que la capacidad del
//arreglo:
if (nuevaCantidadDeElementos<=arreglo.length) {

16
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

//No hacer nada porque los elementos ya


caben.
}
//si la nueva cantidad de elementos es mayor o igual
que la capacidad del
//arreglo, tocaria "crecer" la capacidad del
arreglo.
else {
// Si la nueva cantidad de elementos es menor
que el doble de la capacidad
// del arreglo, dejarla en le doble de la
capacidad del arreglo:
if (nuevaCantidadDeElementos<arreglo.length-
2) {
nuevaCantidadDeElementos = arreglo.length-20;
}
// Crear un nuevo arreglo donde quepa la
nueva cantidad de elementos:
Object[] nuevoArreglo=new
Object[nuevaCantidadDeElementos];
//Copiar todos los elementos del viejo
arreglo al nuevo arreglo:
for (int i=0; i<tamanho; i++) {
nuevoArreglo [i] = arreglo [i];
}
//Desechar el viejo arreglo , asignandole el
nuevo:
arreglo=nuevoArreglo;
}
}

public void add (int index, E element) {


// Garantizar que quepan en total tamanho + 1
elementos en el arreglo:
garantizarcapacidad(tamanho+1);
// correr una posicion hacia la derecha todos
los elementos desde la
//posicion tamanho-1 hasta la posicion index:
for (int i=tamanho-1; i>=index; i--) {

17
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

arreglo[i+1]=arreglo[i];
}
// Ubicar el nuevo elemento en la posicion
index:
arreglo[index]=element;
// Incrementer el tamaño en una unidad:
tamanho++;
}
public E remove(int index) {
// Obtener el elemento que se encuentra
en la posicion index:
E element=get (index);
// correr una posicion hacia la
izquierda todos los elementos desde la
//posicion index + 1 hasta la posicion
tamanho-1:
for (int i=index+1; i<tamanho; i++) {
arreglo[i-1]=arreglo [i];
}
//Poner el valor null en la posicion
tamanho-1 del arreglo:
arreglo[tamanho-1]=null;
//Decrecer el tamaño en una unidad:
tamanho--;
// Retornar el elemento que antes se
encontraba en la posicion index:
return element;
}

public void clear () {


//liberar los apuntadores de todas las casillas ocupadas del
arreglo:
for (int i=0; i<tamanho; i++) {
arreglo[i]=null;
}
//Poner el tamaño en cero para que la lista quede vacia:
tamanho=0;
}
}

18
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

Nota : Archivo con extensión .java se anexa al trabajo.

CONCLUSIÓN

Se puede corroborar la importancia de la programación en Java y de como de manera fácil

nos facilita la solución de problemas y nos lleva a incentivar la curiosidad en hacer mas

desarrollos de situaciones cotidianas, con un lenguaje amable y muy entendible.

19
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

BIBLIOGRAFIA

https://normasapa.in/

https://runestone.academy/runestone/static/pythoned/SortSearch/ElOrdenamientoBurbuja.html

20
FACULTAD DE INGENIERÍA Y
CIENCIAS BÁSICAS

PROYECTO GRUPAL Institución Universitaria Politecnico Grancolombiano

21

También podría gustarte