Está en la página 1de 10

UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento

Identificación:
GL-AA-F-1
Guías de Prácticas de Número de
Revisión No.:
Páginas:
Laboratorio 2
10
Fecha Emisión:
2018/01/31
Laboratorio de:
Programación 3

Titulo de la Práctica de Laboratorio:


Algoritmos de ordenamiento

Elaborado por: Revisado por: Aprobado por:

Byron Alfonso Pérez Ricardo Castillo Comité de area de robótica


Gutiérrez

Docente tiempo completo Jefe de área robótica Ingeniería Mecatrónica

El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 1 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento

Control de Cambios

Fecha de
Descripción del Cambio Justificación del Cambio Elaboración /
Actualización

El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 2 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento

1. FACULTAD O UNIDAD ACADÉMICA: Ingeniería

2. PROGRAMA: Ingeniería Mecatrónica

3. ASIGNATURA: Programación 3

4. SEMESTRE: III

5. OBJETIVO:

General: Diferenciar diferentes métodos de ordenamiento

Específicos:
• Utilizar algoritmos de ordenamiento con arreglos
• Comparar los algoritmos a nivel de complejidad

6. MATERIALES, REACTIVOS, INSTRUMENTOS, SOFTWARE, HARDWARE O


EQUIPOS DEL LABORATORIO:

DESCRIPCIÓN (Material,
reactivo, instrumento, software, CANTIDAD UNIDAD DE MEDIDA
hardware, equipo)
NA

7. MATERIALES, REACTIVOS, INSTRUMENTOS, SOFTWARE, HARDWARE O


EQUIPOS DEL ESTUDIANTE:

DESCRIPCIÓN (Material,
reactivo, instrumento, software, CANTIDAD UNIDAD DE MEDIDA
hardware, equipo)
Computador 1 NA
Software JDK SE (Java
Development Kit - Standard 1 NA
Edition)
Software Netbeans 1 NA

8. PRECAUCIONES CON LOS MATERIALES, REACTIVOS, INSTRUMENTOS


Y EQUIPOS A UTILIZAR:

El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 3 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento

Utilizar adecuadamente el equipo de cómputo para realizar la práctica de


laboratorio.

9. PROCEDIMIENTO, MÉTODO O ACTIVIDADES:

1. Arreglos

Un arreglo o array es una secuencia de datos del mismo tipo. Los datos se
llaman elementos del array y se enumeran consecutivamente 0,1,2,3,…, estos
valores se denominan valores índice o subíndice del array tal como en
matemáticas <a0, a1, a2, a3, …>. El tipo de elementos almacenados en el array
puede ser cualquier dato simple de Java o de un tipo previamente declarado
como una clase. Normalmente, el array se utiliza para almacenar tipos tales
como char, int, float o double.

Si el nombre del array es a, entonces a[0] es el nombre del elemento que está
en la primera posición y a[1] es el nombre del elemento que está en la segunda
posición, etc.

Creación de un array:

int [] a = new int[5];


float [] b = new float[10];

Y en forma general:

tipo [] nombreArray = new tipo[numeroDeElementos];

Asignación de valores:

char[] c = new char[10];


c[0] = ‘z’; //asigna el valor ‘z’ a la primera posición del array

double [] t = new double[5];


t[3] = -1.203; // asigna el valor -1.203 a la cuarta posición del
array

int [] tabla = {1,6,3,4,8}; //Creación y asignación de valores


simultáneamente

Tamaño de un array:
El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 4 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento

Cómo Java considera a los arrays como objetos, dispone el atributo length
como el número de elementos:

double [] v = new double[15];


System.out.println(v.length); // escribe 15, número de elementos de v

Arreglos multidimensionales:

int [][] posiciones = new int[80][24]

int [][] tabla ={ {1,6,3,4,8},


{2,4,6,7,9} };

int [][] tabla2 ={ {1,6,3,4,8},


{2,4,6,7,9} ,
{1,2,3,4,5} };

Y en forma general para arreglos bidimensionales:

tipo [][] nombreArray = new tipo[numeroDeFilas][numeroDeColumnas];

Ejemplo de arreglo tridimensional:

int pagina, linea, columna;


final int PAGINAS = 500;
final int LINEAS = 45;
final int COLUMNAS = 80;

char libro[][][] = new char[PAGINAS][ LINEAS][ COLUMNAS];


for(pagina = 0;linea <PAGINAS;pagina++)
for(linea = 0;linea <LINEAS;linea++)
for(columna = 0;columna < COLUMNAS;columna++)
//procesar libro[pagina][línea][columna];

Cadenas como arrays con la clase String:

Una cadena es una secuencia de caracteres delimitada entre comillas dobles.


“AMIGOS” es una cadena compuesta de 6 elementos char.

Java no tiene el tipo de cadena como tipo de datos primitivos, sino que declara
varias clases para el manejo de cadenas, donde se destaca la clase String:
El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 5 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento

String nombre = “Juan”;


String vacia = “”;
String rotulo = “\n\t Lista de pasajeros\n ==============”;

Métodos de String:

length Devuelve el número de caracteres de la cadena:


String programa = “Mecatrónica”;
int tamaño = programa.length(); // Asigna el valor entero 11 a tamaño

concat Añade la cadena al final de la cadena invocante, concatena.


String c1 = ”Hola”;
String c2 = “Mundo”;
c1.concat(c2); //c1 queda con el valor “HolaMundo”

substring Devuelve una cadena formada por los caracteres entre inicial y final
String c = “Mecatrónica”;
String d = c.substring(4, 8); //d queda con el valor “tron”

equals Devuelve true si la cadena que llama coincide alfabéticamente con la


segunda cadena
String c = “Mecatrónica”;
String d = “Mecatronica”;
boolean b = c.equals(d); //b queda con el valor false porque c y d son
diferentes

2. Algoritmos de ordenamiento

En ciencias de la computación, un algoritmo de ordenamiento es aquel que


pone los elementos de una lista en cierto orden. Los órdenes más utilizados
son el orden numérico y el orden lexicográfico.

Entrada: Una secuencia de n números <a0, a1, a2, a3, …, an>


Salida: Una permutación (reordenamiento) <a’0, a’1, a’2, a’3, …, a’n> de la
secuencia de entrada tal que a’0 ≤ a’1 ≤ a’2 ≤ a’3 ≤ … ≤ a’n

El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 6 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento


Método de burbuja:

El ordenamiento de burbuja (bubble-sort) es el algoritmo de clasificación más


simple que funciona intercambiando repetidamente los elementos adyacentes
si están en el orden incorrecto.

BUBBLE-SORT(A)
1 for j ← 0 to length[A]- j - 1
2 for i ← 0 to length[A]- i - 2
3 if A[j] > A[j+1]
4 ▹ Intercambie A[j] y A[j+1]

Método de inserción:

El ordenamiento por inserción (insertion-sort) funciona de la misma manera


como muchas personas clasifican una baraja de cartas. Comenzamos con la
mano izquierda vacía y las cartas boca abajo sobre la mesa. Luego retiramos
una tarjeta a la vez de la mesa y la insertamos en la posición correcta en la
mano izquierda. Para encontrar la posición correcta de una carta, la
comparamos con cada una de las cartas que ya están en la mano, de derecha
a izquierda.

INSERTION-SORT(A)
1 for j ← 2 to length[A]
2 do key ← A[j]
3 ▹ Inserte A[j] en la secuencia ordenada A[1 … j - 1].
4 i ← j - 1
5 while i > 0 and A[i] > key
6 do A[i + 1] ← A[i]
7 i ← i - 1
8 A[i + 1] ← key

Método de selección:

La ordenación por selección (selection-sort) es un algoritmo que selecciona el


elemento más pequeño de una lista sin clasificar en cada iteración y coloca ese
elemento al principio de la lista sin clasificar.

SELECTION-SORT(A)
1 for i ← 0 to length[A] - 2
2 min ← i
2 for j ← i+1 to length[A] - 1
3 if A[i] < A[min]
4 min ← j
5 ▹ Intercambie A[i] y A[min]
El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 7 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento

Método merge:

La ordenación por mezcla (merge-sort) utiliza la estrategia divide y vencerás.


Divide el arreglo de entrada en dos mitades, se llama a sí mismo para las dos
mitades y luego fusiona las dos mitades ordenadas. La función merge() se usa
para fusionar dos mitades. La función merge(A, l, m, r) asume que A[l .. m] y A
[m + 1 .. r] están ordenados y fusiona los dos subarreglos ordenados en uno.

mergesort(A, l, r)
1 if r > l
// Encuentre el punto medio para dividir el arreglo en dos mitades:
2 mitad m = l + (r-l)/2
// Llame mergesort para la primera mitad:
3 mergesort(A, l, m)
// Llame mergesort para la segunda mitad:
4 mergesort(A, m+1, r)
// Mezcle las dos mitades ordenadas en 3 y 4:
5 merge(A, l, m, r)

mergesort(A, l, m, r)
//crear un arreglo temporal
1 temp[r – l + 1]
2 i ← l; j ← m +1; k ← 0 //índices para ambos intervalos
// recorrer ambos arreglos y en cada iteración agregar el menor de
//ambos elementos a temp
3 while i < m and j < r
4 if A[i] <= A[j]
5 temp[k] ← A[i]
6 k ← k + 1; i ← i + 1
7 else
8 temp[k] ← A[j]
9 k ← k + 1; i ← i + 1
//agregar elementos a la izquierda del primer intervalo
10 while i < m
11 temp[k] ← A[i]
12 k ← k + 1; i ← i + 1
//agregar elementos a la izquierda del segundo intervalo
13 while j < r
11 temp[k] ← A[j]
12 k ← k + 1; i ← i + 1
//copiar temp al interval original
13 for i ← l to r
14 A[i] ← temp[i - l]

El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 8 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento


3. Ejercicio aplicado

3.1 Escriba un programa que calcule la media, varianza y desviación estándar


de un arreglo de números enteros aleatorios. El usuario debe ingresar el
tamaño del arreglo.

3.2 Escriba un programa que lea una línea de caracteres y la visualice de tal
forma que las vocales sean sustituidas por el carácter que más veces se repita
en la línea.

3.3 Escriba un programa que ordene un arreglo de números tipo double


aleatorios por los métodos burbuja, inserción, selección y mergesort. Realice
una tabla comparativa de los tiempos empleados por cada método cuando se
tienen 100, 500, 1000, 5000 y 10000 números.

3.4 Escriba una clase persona con campos: cédula, nombre y edad. A
continuación, cree un arreglo de objetos persona y posteriormente ordene de
menor a mayor los objetos por cédula o edad. El usuario debe poder escoger el
método de ordenamiento entre mergesort o burbuja. Este programa debe
implementarse con interfaz gráfica.

10. RESULTADOS ESPERADOS:

El estudiante debe estar en capacidad de construir y ejecutar aplicaciones en


el IDE NetBeans utilizando el lenguaje de programación orientado a objetos
JAVA.

11. CRITERIO DE EVALUACIÓN A LA PRESENTE PRÁCTICA:

El estudiante debe entregar el programa funcionando, su código fuente y


sustentar su funcionamiento.

Criterio No Cumple Cumple


cumple parcialmente totalmente
Sustenta satisfactoriamente y responde a las 0 0.7 1.4
preguntas del docente
Implementa los algoritmos solicitados 0 1.5 3
Presenta claridad y orden y el código desarrollado es 0 0.3 0.6
orientado a objetos
Total 5.0

El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 9 de 10
UNIVERSIDAD MILITAR NUEVA GRANADA

Laboratorio 2. Algoritmos de ordenamiento


12. REFERENCIAS

[1] NetBeans IDE. (2013). Tutorial Quick Start Guide. Apache NetBeans.
https://netbeans.org/kb/docs/java/quickstart.html

[2] Deitel, P. J., & Deitel, H. M. (2016). Java: como programar. Pearson educación.
http://www.ebooks7-24.com.ezproxy.umng.edu.co/?il=4371

[3] Joyanes Aguilar, L., & Zahonero, I. (2008). Estructuras de datos en Java.
McGraw-Hill

[4] Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to
algorithms. MIT press.

El uso no autorizado de su contenido así como reproducción total o parcial por cualquier persona o entidad, estará en
contra de los derechos de autor
Pagina 10 de 10

También podría gustarte