Вы находитесь на странице: 1из 11

Ejercicios prcticos aplicando los mtodos de ordenamiento: intercambio, insercin, seleccin, shellsort y mergesort.

Ejercicio # 1
Dado el siguiente vector lineal no ordenado, aplicar el algoritmo interno de ordenamiento por intercambio mayor. A = [9 0 -2 8 1 -5 4 7]

# Pasadas = n - 1 => 7 COMPARACIONES A[1] > A[2] => 9 > 0 A[2] > A[3] => 9 > -2 A[3] > A[4] => 9 > 8 A[4] > A[5] => 9 > 1 A[5] > A[6] => 9 > -5 A[6] > A[7] => 9 > 4 A[7] > A[8] => 9 > 7 A[1] > A[2] => 0 > -2 A[2] > A[3] => 0 > 8 A[3] > A[4] => 8 > 1 A[4] > A[5] => 8 > -5 A[5] > A[6] => 8 > 4 A[6] > A[7] => 8 > 7 A[7] > A[8] => 8 > 9 A[1] > A[2] => -2 > 0 A[2] > A[3] => 0 > 1 A[3] > A[4] => 1 > -5 A[4] > A[5] => 1 > 4 A[5] > A[6] => 4 > 7 A[6] > A[7] => 7 > 8 A[7] > A[8] => 8 > 9 A[1] > A[2] => -2 > 0 A[2] > A[3] => 0 > -5 A[3] > A[4] => 0 > 1 A[4] > A[5] => 1 > 4 A[5] > A[6] => 4 > 7 A[6] > A[7] => 7 > 8 A[7] > A[8] => 8 > 9 DECISION NUEVO VECTOR 0 0 0 0 0 0 0 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 9 -2 -2 -2 -2 -2 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5 -5 -5 -5 -5 -5 -2 9 8 8 8 8 8 8 8 1 1 1 1 1 1 1 -5 -5 -5 -5 -5 -5 0 0 0 0 0 0 8 8 9 1 1 1 1 1 1 8 -5 -5 -5 -5 -5 -5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 -5 -5 -5 -5 -5 -5 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -5 -5 -5 -5 9 4 4 4 4 4 4 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4 4 4 4 4 9 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9

PASADA # 1
Verdadero Verdadero Verdadero Verdadero Verdadero Verdadero Verdadero

PASADA # 2
Verdadero Falso Verdadero Verdadero Verdadero Verdadero Falso

PASADA # 3
Falso Falso Verdadero Falso Falso Falso Falso

PASADA # 4
Falso Verdadero Falso Falso Falso Falso Falso

PASADA # 5
A[1] > A[2] => -2 > -5 A[2] > A[3] => -2 > 0 A[3] > A[4] => 0 > 1 A[4] > A[5] => 1 > 4 A[5] > A[6] => 4 > 7 A[6] > A[7] => 7 > 8 A[7] > A[8] => 8 > 9 Verdadero Falso Falso Falso Falso Falso Falso -5 -5 -5 -5 -5 -5 -5 -2 -2 -2 -2 -2 -2 -2 0 0 0 0 0 0 0 1 1 1 1 1 1 1 4 4 4 4 4 4 4 7 7 7 7 7 7 7 8 8 8 8 8 8 8 9 9 9 9 9 9 9

Al revisar la ultima comparacin podemos ver que el arreglo queda ordenado y el resultado es el siguiente

A = [-5

-2

9]

Ejercicio # 2
Dado el siguiente vector lineal no ordenado, aplicar el algoritmo interno de ordenamiento por intercambio menor. A = [8 9 3 -1 6 1 2]

# Pasadas = n - 1 => 6 COMPARACIONES A[6] > A[7] => 1 > 2 A[5] > A[6] => 6 > 1 A[4] > A[5] => -1 > 1 A[3] > A[4] => 3 > -1 A[2] > A[3] => 9 > -1 A[1] > A[2] => 8 > -1 A[6] > A[7] => 6 > 2 A[5] > A[6] => 1 > 2 A[4] > A[5] => 3 > 1 A[3] > A[4] => 9 > 1 A[2] > A[3] => 8 > 1 A[1] > A[2] => -1 > 1 A[6] > A[7] => 2 > 6 A[5] > A[6] => 3 > 2 A[4] > A[5] => 9 > 2 A[3] > A[4] => 8 > 2 DECISION NUEVO VECTOR 8 8 8 8 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 9 9 -1 8 8 8 8 8 1 1 1 1 1 1 3 3 3 -1 9 9 9 9 9 1 8 8 8 8 8 2 -1 -1 -1 3 3 3 3 3 1 9 9 9 9 9 2 8 6 1 1 1 1 1 1 1 3 3 3 3 3 2 9 9 1 6 6 6 6 6 2 2 2 2 2 2 2 3 3 3 2 2 2 2 2 2 6 6 6 6 6 6 6 6 6 6

PASADA # 1
Falso Verdadero Falso Verdadero Verdadero Verdadero

PASADA # 2
Verdadero Falso Verdadero Verdadero Verdadero Falso

PASADA # 3
Falso Verdadero Verdadero Verdadero

A[2] > A[3] => 1 > 2 A[1] > A[2] => -1 > 1 A[6] > A[7] => 3 > 6 A[5] > A[6] => 9 > 3 A[4] > A[5] => 8 > 3 A[3] > A[4] => 2 > 3 A[2] > A[3] => 1 > 2 A[1] > A[2] => -1 > 1 A[6] > A[7] => 9 > 6 A[5] > A[6] => 8 > 6 A[4] > A[5] => 3 > 6 A[3] > A[4] => 2 > 3 A[2] > A[3] => 1 > 2 A[1] > A[2] => -1 > 1

Falso Falso

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

1 1 1 1 1 1 1 1 1 1 1 1 1 1

2 2 2 2 2 2 2 2 2 2 2 2 2 2

8 8 8 8 3 3 3 3 3 3 3 3 3 3

9 9 9 3 8 8 8 8 8 6 6 6 6 6

3 3 3 9 9 9 9 9 6 8 8 8 8 8

6 6 6 6 6 6 6 6 9 9 9 9 9 9

PASADA # 4
Falso Verdadero Verdadero Falso Falso Falso

PASADA # 5
Verdadero Verdadero Falso Falso Falso Falso

Al revisar la ultima comparacin podemos ver que el arreglo queda ordenado y el resultado es el siguiente

A = [-1

1 2

9]

Ejercicio # 3
Dado el siguiente vector lineal no ordenado, aplicar el algoritmo interno de ordenamiento por insercin. A = [8 4 -7 2 5 -1 9]

# Pasadas = n - 1 => 6

COMPARACIONES A[2] < A[1] => 4 < 8 A[3] < A[2] => -7 < 8 A[2] < A[1] => -7 < 4 A[4] < A[3] => 2 < 8 A[3] < A[2] => 2 < 4

DECISION

NUEVO VECTOR 4 4 -7 -7 -7 8 -7 4 4 2 -7 8 8 2 4 2 2 2 8 8 5 5 5 5 5 -1 -1 -1 -1 -1 9 9 9 9 9

PASADA # 1
Verdadero

PASADA # 2
Verdadero Verdadero

PASADA # 3
Verdadero Verdadero

A[2] < A[1] => 2 < -7

Falso

-7

-1

PASADA # 4
A[5] < A[4] => 5 < 8 Verdadero -7 2 4 5 8 -1 9 A[4] < A[3] => 5 < 4 Falso -7 2 4 5 8 -1 9 No se siguen verificando las otras comparaciones debido a que los valores de la izquierda ya se encuentran ordenados.

PASADA # 5
A[6] < A[5] => -1 < 8 A[5] < A[4] => -1 < 5 A[4] < A[3] => -1 < 4 A[3] < A[2] => -1 < 2 A[2] < A[1] => -1 < -7 Verdadero Verdadero Verdadero Verdadero Falso -7 -7 -7 -7 -7 2 2 2 -1 -1 4 4 -1 2 2 5 -1 4 4 4 -1 5 5 5 5 8 8 8 8 8 9 9 9 9 9

Al revisar la ultima comparacin podemos ver que el arreglo queda ordenado y el resultado es el siguiente A = [-7 - 1 2 4 5 8 9]

Ejercicio # 4
Dado el siguiente vector lineal no ordenado, aplicar el algoritmo interno de ordenamiento por seleccin. A = [56 80 59 11 17 89 33 63]

# Pasadas = n - 1 => 7 El objetivo del mtodo por seleccin es encontrar el nmero menor de todos y hacer un intercambio. Cuando la condicin es verdadero el valor Menor se mantiene, si la condicin es falsa el valor Menor se cambia. COMPARACIONES DECISION NUEVO VECTOR

PASADA # 1 Menor A[1] = 56


Menor < A[2] => 56 < 80 Menor < A[3] => 56 < 59 Menor < A[4] => 56 < 11 Menor < A[5] => 11 < 17 Menor < A[6] => 11 < 89 Menor < A[7] => 11 < 33 Menor < A[8] => 11 < 63 Verdadero Verdadero Falso

Menor A[4] = 11
Verdadero Verdadero Verdadero Verdadero

11 80 59 56 17 89 33

63

PASADA # 2 Menor A[2] = 80


Menor < A[3] => 80 < 59 Menor < A[4] => 59 < 56 Menor < A[5] => 56 < 17 Falso

Menor A[3] = 59
Falso

Menor A[4] = 56
Falso

Menor A[5] = 17
Menor < A[6] => 17 < 89 Verdadero Menor < A[7] => 17 < 33 Verdadero Menor < A[8] => 17 < 63 Verdadero 11 17 59 56 80 89 33 63 En la segunda pasada el valor Menor se cambio tres veces, por tanto el valor inicial del Menor que era 80 al final se cambia de posicin con el ultimo valor Menor que fue 17. Perdn por la confusin dada en la clase cuando se dio este caso, espero que haya quedado claro.

PASADA # 3 Menor A[3] = 59


Menor < A[4] => 59 < 56 Menor < A[5] => 56 < 80 Menor < A[6] => 56 < 89 Menor < A[7] => 56 < 33 Falso

Menor A[4] = 56
Verdadero Verdadero Falso

Menor A[7] = 33
Menor < A[8] => 33 < 63 Verdadero 11 17 33 56 80 89 59 63 En la tercera pasada el valor Menor se cambio dos veces, por tanto el valor inicial del Menor que era 59 al final se cambia de posicin con el ultimo valor Menor que fue 33.

PASADA # 4 Menor A[4] = 56


Menor < A[5] => 56 < 80 Verdadero Menor < A[6] => 56 < 89 Verdadero Menor < A[7] => 56 < 59 Verdadero Menor < A[8] => 56 < 63 Verdadero 11 17 33 56 80 89 59 En la cuarta pasada no se modifica debido a que todas las condiciones fueron verdaderas.

63

PASADA # 5 Menor A[5] = 80


Menor < A[6] => 80 < 89 Menor < A[7] => 80 < 59 Verdadero Falso

Menor A[7] = 59
Menor < A[8] => 59 < 63 Verdadero 11 17 33 56 59 89 80 63 En la quinta pasada el valor Menor se cambio una vez, por tanto el valor inicial del Menor que era 80 al final se cambia de posicin con el ultimo valor Menor que fue 59.

PASADA # 6 Menor A[6] = 89


Menor < A[7] => 89 < 80 Menor < A[8] => 80 < 63 Falso

Menor A[7] = 80
Falso

Menor A[8] = 63
11 17 33 56 59 63 80 89 En la sexta pasada el valor Menor se cambio dos veces, por tanto el valor inicial del Menor que era 89 al final se cambia de posicin con el ultimo valor Menor que fue 63. Al revisar la ultima comparacin podemos ver que el arreglo queda ordenado y el resultado es el siguiente A = [11 17 33 56 59 63 80 89]

Ejercicio # 5
Dado el siguiente vector lineal no ordenado, aplicar el algoritmo interno de ordenamiento por Shell Sort. A = [4 6 7 1 9 5 3 8 2]

El algoritmo indica que debemos ir haciendo ms pequeo nuestro arreglo, y en cada pasada aplicar el mtodo de insercin Dividir el total de elementos entre dos, si el resultado tiene fraccin, se debe tomar el valor entero y hacer saltos con el valor resultante.

Primer Pasada
Salto = 9 / 2 => 4.5 => 4

Como resultado de la primera pasada obtenemos 4 sub arreglos, que quedan conformados de la siguiente forma: A1 = [4 9 2] ; A2 = [6 5]; A3 = [7 3]; A4 = [1 8]

Como se menciono anteriormente, a cada sub arreglo se debe aplicar el mtodo de insercin, la ventaja del mtodo es que se aplica el mtodo a arreglos pequeos. ARREGLO A1 Pasadas = 2 COMPARACIONES DECISION NUEVO VECTOR

PASADA # 1
A[5] < A[1] => 9 < 4 A[9] < A[5] => 2 < 9 A[5] < A[1] => 2 < 4 Arreglo ordenado de A1 = [2 ARREGLO A2 Pasadas = 1 COMPARACIONES A[6] < A[2] => 5 < 6 Arreglo ordenado de A2 = [5 ARREGLO A3 Pasadas = 1 COMPARACIONES A[7] < A[3] => 3 < 7 Arreglo ordenado de A3 = [3 ARREGLO A4 Pasadas = 1 COMPARACIONES A[8] < A[4] => 8 < 1 Arreglo ordenado de A3 = [1 Falso 4 4 2 9] 9 2 4 2 9 9

PASADA # 2
Verdadero Verdadero 4

DECISION

NUEVO VECTOR 5 6

PASADA # 1
Verdadero 6]

DECISION

NUEVO VECTOR 3 7

PASADA # 1
Verdadero 7]

DECISION

NUEVO VECTOR 1 8

PASADA # 1
Falso 8]

Resultado final de la primera pasada

Segunda Pasada
Salto = 4 / 2 => 2

A1 = [2

9] ; A2 = [5 7 9]

8];

ARREGLO A1 => [2 3 4 Pasadas = 4 COMPARACIONES A[3] < A[1] => 3 < 2 A[5] < A[3] => 4 < 3 A[3] < A[1] => 4 < 2 A[7] < A[5] => 7 < 4 A[5] < A[3] => 4 < 3 A[3] < A[1] => 3 < 2

DECISION

NUEVO VECTOR 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 7 7 7 7 7 7 9 9 9 9 9 9 9 9 9 9

PASADA # 1
Falso

PASADA # 2
Falso Falso

PASADA # 3
Falso Falso Falso

PASADA # 4
A[9] < A[7] => 9 < 4 Falso 2 3 4 7 A[7] < A[5] => 7 < 4 Falso 2 3 4 7 A[5] < A[3] => 4 < 3 Falso 2 3 4 7 A[3] < A[1] => 3 < 2 Falso 2 3 4 7 De simple vista se pudo observar que el sub arreglo A1 ya estaba ordenado, se realizo el proceso para que quede constancia de como trabajara el algoritmo. Arreglo ordenado de A1 = [2 ARREGLO A2 => [5 1 6 Pasadas = 3 COMPARACIONES A[4] < A[2] => 1 < 5 A[6] < A[4] => 6 < 5 A[4] < A[2] => 5 < 1 3 8] DECISION NUEVO VECTOR 1 1 1 5 5 5 6 6 6 8 8 8 4 7 9]

PASADA # 1
Verdadero

PASADA # 2
Falso Falso

PASADA # 3

A[8] < A[6] => 8 < 6 A[6] < A[4] => 6 < 5 A[4] < A[2] => 5 < 1 Arreglo ordenado de A2 = [1

Falso Falso Falso 5 6 8]

1 1 1

5 5 5

6 6 6

8 8 8

Resultado final de la segunda pasada

Tercera Pasada
Salto = 2 / 2 => 1

2
Pasadas = 8

COMPARACIONES A[2] < A[1] => 5 < 2 A[3] < A[2] => 3 < 5 A[2] < A[1] => 3 < 2 A[4] < A[3] => 1 < 5 A[3] < A[2] => 1 < 3 A[2] < A[1] => 1 < 2 A[5] < A[4] => 4 < 5 A[4] < A[3] => 4 < 3

DECISION

NUEVO VECTOR 2 2 2 2 2 1 1 1 5 3 3 3 1 2 2 2 3 5 5 1 3 3 3 3 1 1 1 5 5 5 4 4 4 4 4 4 4 4 5 5 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9

PASADA # 1
Falso

PASADA # 2
Verdadero Falso

PASADA # 3
Verdadero Verdadero Verdadero

PASADA # 4
Verdadero Falso

Al revisar el arreglo queda ordenado y ya no es necesario realizar las siguientes operaciones: A = [1 2 3 4 5 6 7 8 9]

Ejercicio # 6
Dado el siguiente vector lineal no ordenado, aplicar el algoritmo interno de ordenamiento por Merge Sort. Lo primero que se debe hacer es dividir el arreglo hasta llegar su nico elemento, luego ordenarlo y por ultimo mezclar los sub arreglos ordenados.

A = [12 12 20 -5

20

-5
0

0
2

13
9

15
13

21]
15 21

12

20

-5

13

15

21

12

20

-5

13

15

21

12

20

-5

13

15

21

12

20

-5

13

15

21

12

20

-5

13

15

21

-5

12

20

13

15

21

-5

12

20

13

15

21

-5

12

13

15

20

21

Para ordenar cada uno de los sub arreglo, se debe tomar el primer elemento de cada uno e ir comparando hasta quedar ordenado los sub arreglo, luego es de mezclar los sub arreglos y repetir el proceso de ordenar.

Вам также может понравиться