Está en la página 1de 2

Axel Ricardo Ascue Peña Cod: 141000

Primer Examen Parcial

Pregunta 1:
Considere ordenar n números almacenados en el array A, en el siguiente modo:
encontrando primero el elemento más pequeño de A e intercambiarlo con el elemento de A [1]. Luego encuentra
el segundo elemento más pequeño de A e intercambiarlo con A [2]. Continúe de esta manera por los primeros
n-1 elementos de A.

1.1 Escriba el pseudocódigo para este algoritmo, que se conoce como Selección
Sort:

Input: Una lista A de n-elementos.


Output: Lista A ordenada de forma ascendente
1 for i ← 1 to length[A] - 1 do
Bkey Guardará el valor más peque~
no que se encuentre
2 key ← i
3 for j ← i + 1 to length[A] do
4 if A[j] < A[key] then
5 key ← j
6 end
7 end
BAhora intercambiamos los valores A[key] y A[i]
8 aux ← A[key]
9 A[key] ← A[i]
10 A[i] ← aux
11 end
Algorithm 1: Selection Sort

1.2 Dar el tiempo de ejecución en el peor y mejor de los casos usando la notación
Teta:

Analizamos la complejidad de cada linea:

linea costo repeticiones linea costo repeticiones


Pn−1
1 c1 n−1 5 c5 t=1 t
2 c2 n−1 8 c6 n−1
Pn−1
3 c3 t 9 c7 n−1
Pt=1
n−1
4 c4 t=1 t 10 c8 n−1

Si analizamos el algoritmos podemos determinar que este siempre analizará toda la lista para cualquier caso
por lo que tanto el peor como el mejor caso tendrán la misma complejidad.

Análisis y Diseño de Algoritmos 1


Axel Ricardo Ascue Peña Cod: 141000

Ahora sumamos los valores de las repeticiones por el costo de cada linea
Pn−1 Pn−1 Pn−1
T (n) = c1 ∗ (n − 1) + c2 ∗ (n − 1) + c3 ∗ t=1 t + c4 ∗ t=1 t + c5 ∗ t=1 t
+c6 ∗ (n − 1) + c7 (n − 1)c8 ∗ (n − 1)
Pn
T (n) = (c3 + c4 + c5 ) ∗ t=1 t + (c1 + c2 + c6 + c7 + c8 ) ∗ (n − 1)
T (n) = (c3 + c4 + c5 ) ∗ n(n−1)
2 + (c1 + c2 + c6 + c7 + c8 ) ∗ n − (c1 + c2 + c6 + c7 + c8 )
2
T (n) = (c3 + c4 + c5 ) ∗ n 2−n + (c1 + c2 + c6 + c7 + c8 ) ∗ n − (c1 + c2 + c6 + c7 + c8 )
c3 +c4 +c5

T (n) = 2 ∗ (n2 − n) + (c1 + c2 + c6 + c7 + c8 ) ∗ n − (c1 + c2 + c6 + c7 + c8 )
c3 +c4 +c5
∗ n2 − c3 +c24 +c5 ∗ n + (c1 + c2 + c6 + c7 + c8 ) ∗ n − (c1 + c2 + c6 + c7 + c8 )
 
T (n) = 2
c3 +c4 +c5
∗ n2 + c1 + c2 + c6 + c7 + c8 − c3 +c24 +c5 ∗ n − (c1 + c2 + c6 + c7 + c8 )
 
T (n) = 2

Finalmente en notación Θ el algoritmo tendrá un tiempo de ejecución de T (n) = Θ(n2 ) tanto en el mejor como
en el peor caso.

Pregunta 2:
Resuelva la recurrencia T (n) = 3T (n/2) + n2 − n. Si T (1) = 1, para todo n ≥ 2 potencias de 2. Muestre todas
sus operaciones:

Pregunta 3:
Calcular el tiempo de ejecución del algoritmo Quicksort cuando se emplea el procedimiento RANDOMIZED-
PARTITION

Pregunta 4:
Indicar el tiempo de ejecución en el mejor, medio, y peor de los casos para los algoritmos: Quick Sort, Heap
Sort, Counting Sort, Radix Sort y Bucket Sort:

Mejor Caso Caso Promedio Peor Caso Observación


 2

Θ n + nk + k

Bucket Sort θ n2 k = número de
buckets
Counting Sort Θ(n + k) Θ(n + k) Θ(n + k) k = cantidad de
dı́gitos del entero
más largo
Heap Sort Θ(n log n) Θ(n log n) Θ(n log n)

Quick Sort Θ(n log n) Θ(n log n) Θ(n2 )

Radix Sort Θ(w · n) Θ(w · n) Θ(w · n) w = cantidad de


dı́gitos del entero
más largo

Análisis y Diseño de Algoritmos 2

También podría gustarte