20.03.2015 Views

Tabla de Contenidos

Tabla de Contenidos

Tabla de Contenidos

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.1. ALGORITMOS SIMPLES DE ORDENACIÓN 25<br />

Figura 2.3: Árbol <strong>de</strong> recursión para la complejidad <strong>de</strong> Merge-Sort.<br />

Muchas veces nos encontraremos con la necesidad <strong>de</strong> calcular complejida<strong>de</strong>s <strong>de</strong> algoritmos recursivos,<br />

el siguiente teorema nos ayuda con una fórmula general que servirá en casi todos los casos<br />

que veremos durante el curso.<br />

Teorema 2.1.1. Sea T(n) una función tal que cumple con la siguiente relación <strong>de</strong> recurrencia:<br />

( n<br />

)<br />

T(n) = aT + f(n)<br />

b<br />

don<strong>de</strong> f(n) es una función en Θ(n log b a ) y tal que T(1) es Θ(1), entonces se cumple que T(n) es<br />

Θ(n log b a log n).<br />

Es importante notar que Merge-Sort es el primer algoritmo que estudiamos que tarda menos<br />

<strong>de</strong> Θ(n 2 ) en el peor caso, Merge-Sort tarda Θ(nlog n) en el peor caso, lo que es un gran avance.<br />

El mayor (e insalvable) problema <strong>de</strong> Merge-Sort es que necesita <strong>de</strong> mucha memoria adicional para<br />

po<strong>de</strong>r or<strong>de</strong>nar los números (específicamente en la tarea <strong>de</strong> mezcla), necesita tanto espacio adicional<br />

como números tenga que or<strong>de</strong>nar.<br />

Ejercicios<br />

1. Implemente el procedimiento Rec-Insert-Sort(A,i) que or<strong>de</strong>ne el arreglo A usando la misma<br />

estrategia que Insert-Sort pero cambiando una iteración por una llamada recursiva. El<br />

parámetro i indica que lo que se quiere or<strong>de</strong>nar es la porción A[0..i] <strong>de</strong>l arreglo, así la llamada<br />

inicial <strong>de</strong>biera ser Rec-Insert-Sort(A,n − 1).<br />

2. Implemente el procedimiento Rec-Select-Sort(A,i) que or<strong>de</strong>ne el arreglo A usando la misma<br />

estrategia que Select-Sort pero cambiando una iteración por una llamada recursiva. El<br />

parámetro i indica que lo que falta por or<strong>de</strong>nar es la porción A[i..n − 1] <strong>de</strong>l arreglo, así la<br />

llamada inicial <strong>de</strong>biera ser Rec-Select-Sort(A,0).<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!