Está en la página 1de 14

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA DE SISTEMAS


INGENIERÍA EN SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

PERÍODO ACADÉMICO : 2020-A


ASIGNATURA : ALGORITMOS
PROFESOR : ING. María Pérez
TIPO DE INSTRUMENTO : Ejercicios de Algoritmos

NOMBRE : Marlon Pachacama

FECHA DE ENTREGA : 10/06/2020

Ejercicios de Algoritmos

Algoritmos de Búsqueda

Búsqueda Binaria

Arreglo Inicial

0 1 2 3 4 5 6 7 8 9 10 11
1 3 5 7 9 11 13 15 17 19 21 23

min = 0 centro = 5 max = 11

0 1 2 3 4 5 6 7 8 9 10 11
1 3 5 7 9 11 13 15 17 19 21 23

min = 6 centro = 8 max = 11

Paso 2 : posición [5] < 18


0 1 2 3 4 5 6 7 8 9 10 11
1 3 5 7 9 11 13 15 17 19 21 23

min = 9 max = 11

centro = 10

Paso 3 : posición [8] < 18

0 1 2 3 4 5 6 7 8 9 10 11
1 3 5 7 9 11 13 15 17 19 21 23

min=centro=max

Paso 4 : posición [9] >= 18

Conclusión: No se encuentra el número deseado en el arreglo

Búsqueda Lineal

0 1 2 3 4 5
57 53 21 37 17 36

57 = 44 X

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17

53 = 44 X

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17

21 = 44 X
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17

37= 44 X

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17

17= 44 X

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17

36= 44 X

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17

22= 44 X

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17

3= 44 X

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
57 53 21 37 17 36 22 3 44 97 89 26 31 47 8 17

 44= 44

Conclusión: Se encuentra el número en la posición 8


Algoritmo

1. Sea min = 0 y max = n-1.


2. Si max < min, entonces detente: target no está en array. Regresa -1.
3. Calcula centro como el promedio de max y min, redondeado hacia abajo (para que sea
un entero).
4. Si array[centro] es igual a target, entonces detente. ¡Lo encontraste! Regresa centro.
5. Si el intento fue demasiado bajo, es decir, array[centro] < target, entonces haz min =
centro + 1.
6. De lo contrario, el intento fue demasiado alto. Haz max = centro - 1.
7. Regresa al paso 2.

ALGORITMOS CUADRÁTICOS DE ORDENAMIENTO DE PEOR CASO

Ordenación Burbuja: Comparar cada elemento desde el inicio e ir intercambiando hasta


obtener el arreglo ordenado

1ra pasada

10 18 7 15 6 17 10>18 no, no hay intercambio

10 7 18 15 6 17 18>7 si, hay intercambio

10 7 15 18 6 17 18>15 si, hay intercambio

10 7 15 6 18 17 18>6 si, hay intercambio

10 7 15 6 17 18 18>17 si, hay intercambio

2da pasada

10 7 15 6 17 18

7 10 15 6 17 18 10>7 si, hay intercambio

7 10 15 6 17 18 10>15 no, no hay intercambio

7 10 6 15 17 18 15>6 si, hay intercambio

7 10 6 15 17 18 15>17 no, no hay intercambio

7 10 6 15 17 18 17>18 no, no hay intercambio

3ra pasada

7 10 6 15 17 18

7 10 6 15 17 18 7>10 no, no hay intercambio


7 6 10 15 17 18 10>6 si, hay intercambio

7 6 10 15 17 18 10>15 no, no hay intercambio

7 6 10 15 17 18 15>17 no, no hay intercambio

7 6 10 15 17 18 17>18 no, no hay intercambio

4ta pasada

7 6 10 15 17 18 7>6 no, no hay intercambio

7 6 10 15 17 18 6>10 no, no hay intercambio

7 6 10 15 17 18 10>15 no, no hay intercambio

7 6 10 15 17 18 15>17 no, no hay intercambio

7 6 10 15 17 18 17>18 no, no hay intercambio

Numero total de pasadas 4

Ordenación Selección: Intercambiar el primer elemento con el menor elemento, así hasta que
el arreglo se ordene

10 18 7 15 6 17 10 intercambio por 6

6 18 7 15 10 17 18 intercambio 7

6 7 18 15 10 17 18 intercambio 10

6 7 10 15 18 17 No intercambio nada

6 7 10 15 18 17 18 intercambio 17

6 7 10 15 17 18 Arreglo Ordenado

Ordenación Inserción: Compara los dos primeros elementos y


aumenta en uno, de esta manera se va ordenando

10 18 7 15 6 17 10 y 18 ordenado, no hay intercambio

10 18 7 15 6 17 10 y 18 están ordenados, inserto 7, desplazar 10 y 18 hacia la


derecha

7 10 18 15 6 17 7, 10 18 están ordenados, inserto 15, desplazar 18 hacia la


derecha

7 10 15 18 6 17 7,10,15,18 están ordenados, inserto 6, desplazar 7,10,15,18


hacia la derecha

6 7 10 15 18 17 6,7,10,15,18 están ordenados, inserto 17, desplazar 18 hacia


la derecha

6 7 10 15 17 18 Arreglo ordenado
ALGORITMOS DE ORDENAMIENTO DE CASO PROMEDIO O PEOR CASO O (N LOG N)

Mergesort: Dividir/Ordenar/Mezclar

 Dado el siguiente Array [1,12,9,5,6,10];

Arreglo Original

Dividir

Dividir

Dividir

Mezclar

Mezclar

Arreglo Ordenado

QuickSort:
9 7 5 11 12 2 14 3 10 6 9>6 y 10>6, movemos j
i j

9 7 5 11 12 2 14 3 10 6 9>6 y 3<6, intercambio y movemos i y j


i j

3 7 5 11 12 2 14 9 10 6 7>6 y 14>6, movemos j


i j

3 7 5 11 12 2 14 9 10 6 7>6 y 2<6, intercambio y movemos i y j


i j

3 2 5 11 12 7 14 9 10 6 5<6 y 12>6, movemos i y j, se mantienen


i j

3 2 5 11 12 7 14 9 10 6 11>6 y 12>6 movemos j


i j

3 2 5 11 12 7 14 9 10 6 11>6 y 11>6 movemos j


ij

3 2 5 11 12 7 14 9 10 6 Stop, se intercambia i por pivote


j i

3 2 5 6 12 7 14 9 10 11 Arreglo parcial

2da pasada

3 2 5 3<5 y 2<5, movemos i


i j

3 2 5 2<5 y 2<5, movemos i


ij

3 2 5 Stop, se intercambia j por pivote


j i

3 5 2
3ra pasada

6 12 7 14 9 10 11 6<11 y 10<11, movemos i


i j

6 12 7 14 9 10 11 12>11 y 10<11, intercambio y movemos i y j


i j

6 10 7 14 9 12 11 7<11 y 9<11, movemos i


i j

6 10 7 14 9 12 11 14>11 y 9<11, intercambio y movemos i y j


i j

6 10 7 9 14 12 11 14>11 y 9<11, intercambio y movemos i y j


j i

6 10 7 9 11 12 14 Stop, intercambio i por pivote


j i

4ta pasada

6 10 7 9 6<9 y 7<9, movemos i


i j

6 10 7 9 10>9 y 7<9, intercambiar y movemos i y j


i j

6 7 10 9 10>9 y 7<9, intercambiar y movemos i y j


j i

Se cruzan, pero no es necesario el intercambio ya que esta ordenado parcialmente

2 3 5 6 7 10 9 11 12 14 Arreglo Ordenado
HeapSort:
Paso 1:

Paso 2: Eliminar Máximos

0 1 2 3 4 5 Se debe dejar el índice 0 vacío por si existe una posible entrada al


4 10 3 5 1 arreglo.
0 1 2 3 4 5 Se escoge el termino mayor el cual debe estar en la posición 1
10 4 3 5 1

0 1 2 3 4 5 Procedemos a intercambiar el índice 1 con el índice 5


1 4 3 5 10

0 1 2 3 4 5 Luego se vuelve a escoger un nuevo máximo de entre todos los


4 1 3 5 10 términos, teniendo en cuenta que 10 ya fue considerado y se
intercambia hacia el índice 1, en este caso se puede observar
que el número 5 se encuentre en la posición que debería por lo
tanto escogemos otro máximo

0 1 2 3 4 5 Se intercambia el índice 1 con el incide 3


3 1 4 5 10

0 1 2 3 4 5 Finalmente se intercambia el índice 1 con el índice 2, de esta


1 3 4 5 10 manera logramos obtener el arreglo ordenado

Heapsort

Paso 1 : Construcción del Heap

0 1 2 3 4 5 6 7 8 9 10
16 14 10 8 7 9 3 2 4 1

16

14
10

8 7 9 3

2 4 1

Paso 2: Eliminar Máximos

0 1 2 3 4 5 6 7 8 9 10
16 14 10 8 7 9 3 2 4 1

0 1 2 3 4 5 6 7 8 9 10
1 14 10 8 7 9 3 2 4 16

0 1 2 3 4 5 6 7 8 9 10
14 1 10 8 7 9 3 2 4 16

0 1 2 3 4 5 6 7 8 9 10
4 1 10 8 7 9 3 2 14 16

0 1 2 3 4 5 6 7 8 9 10
10 1 4 8 7 9 3 2 14 16

0 1 2 3 4 5 6 7 8 9 10
2 1 4 8 7 9 3 10 14 16

0 1 2 3 4 5 6 7 8 9 10
9 1 4 8 7 2 3 10 14 16

0 1 2 3 4 5 6 7 8 9 10
3 1 4 8 7 2 9 10 14 16

0 1 2 3 4 5 6 7 8 9 10
8 1 4 3 7 2 9 10 14 16

0 1 2 3 4 5 6 7 8 9 10
2 1 4 3 7 8 9 10 14 16

0 1 2 3 4 5 6 7 8 9 10
4 1 2 3 7 8 9 10 14 16

0 1 2 3 4 5 6 7 8 9 10
3 1 2 4 7 8 9 10 14 16

0 1 2 3 4 5 6 7 8 9 10
2 1 3 4 7 8 9 10 14 16

0 1 2 3 4 5 6 7 8 9 10
1 2 3 4 7 8 9 10 14 16
Extracción Prefijos y sufijos

GATGACTAGT

Substrings Prefijos Sufijos


1 G - -
2 GA [G] [A]
3 GAT [G, GA] [A, AT]
4 GATG [G, GA, GAT] [G, TG, ATG]
5 GATGA [G, GA, GAT, GATG] [A, GA, TGA, ATGA]
6 GATGAC [G, GA, GAT, GATG, GATGA] [C, AC, GAC, TGAC, ATGAC]
7 GATGACT [G, GA, GAT, GATG, GATGA, [T, CT, ACT, GACT, TGACT,
GATGAC] ATGACT]
8 GATGACTA [G, GA, GAT, GATG, GATGA, [A, TA, CTA, ACTA, GACTA,
GATGAC, GATGACT] TGACTA, ATGACTA]
9 GATGACTAG [G, GA, GAT, GATG, GATGA, [G, AG, TAG, CTAG, ACTAG,
GATGAC, GATGACT, GATGACTA] GACTAG, TGACTAG, ATGACTAG]
10 GATGACTAG [G, GA, GAT, GATG, GATGA, [T, GT, AGT, TAGT, CTAGT,
T GATGAC, GATGACT, GATGACTA, ACTAGT, GACTAGT, TGACTAGT,
GATGACTAG] ATGACTAGT]

Substrings
G 0
GA 0
GAT 0
GATG 1 [G]
GATGA 2 [GA]
GATGAC 0
GATGACT 0
GATGACTA 0
GATGACTAG 1 [G]
GATGACTAG 0
T
b [0] = 0

b [1] = -1

b [2] = 0

b [3] = 0

b [4] = 0

b [5] = 1

b [6] = 2

b [7] = 0

b [8] = 0

b [9] = 0

b [10] = 1

b [11] = 0

P: G A T G A C T A G T
P[i]: 0 1 2 3 4 5 6 7 8 9
b[i]: - 0 0 0 1 2 0 0 0 1 0
1

I: G A T G A C
P[] 0 1 2 3 4 5
:
Fai -1 0 0 0 1 2
l
Paso 1: Falla en la posición 0, fail (0) = -1, por lo que el salto estaría dado por: (0) -(-1) =1

C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T

Paso 2: Falla en la posición 0, fail (1) = 0, por lo que el salto estaría dado por: (0) -(-0) =0

C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T

C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T

C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T
C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T

C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T

C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T

C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T

C T A A A G A T G A T C T T T A G T C C C G G T T C G A A
G A T G A C T A G T

También podría gustarte