Vous êtes sur la page 1sur 51

INTRODUCCION

Los algoritmos de ordenamiento nos permite, como su


nombre lo dice, ordenar. En este caso, nos servirn para
ordenar vectores o matrices con valores asignados
aleatoriamente. Nos centraremos en los mtodos ms
populares, analizando la cantidad de comparaciones que
suceden, el tiempo que demora y revisando el cdigo, escrito
en Java, de cada algoritmo.
Existen muchos algoritmos de ordenacin, siendo la diferencia
entre ellos las ventajas de unos sobre otros en la eficiencia en
tiempo de ejecucin.
METODOS RECURSIVOS

Estos mtodos son an mas complejos, requieren de mayor


atencin y conocimiento para ser entendidos. Son rpidos y
efectivos, utilizan generalmente la tcnica Divide y vencers, que
consiste en dividir un problema grande en varios pequeos para
que sea ms fcil resolverlos. Mediante llamadas recursivas a si
mismos, es posible que el tiempo de ejecucin y de ordenacin
sea ms optimo.
Dentro de los algoritmos recursivos encontramos:
Ordenamiento por Mezclas (MergeSort)
Ordenamiento Rpido (QuickSort)
Tipos de algoritmos de ordenacin

Algoritmos de ordenacin interna: En memoria


principal (acceso aleatorio)
Algoritmos de ordenacin externa: En memoria
secundaria (restricciones de acceso)
Aplicaciones
Otras aplicaciones aplicaciones :
Compresin Compresin de datos.
Informtica Informtica grfica grfica.
Planificacin Planificacin de tareas.
Balanceado Balanceado de carga en un ordenador
ordenador paralelo paralelo.
Biologa computacional.
Simulacin Simulacin (p.ej. sistemas sistemas de
partculas partculas)
Quicksort (Mtodo Rpido)
Algoritmo rpido (Quicksort)

Sin duda, este algoritmo es uno de los mas eficientes. Este


mtodo es el mas rpido gracias a sus llamadas recursivas,
basndose en la teora de divide y vencers.
Lo que hace este algoritmo es dividir recursivamente el vector
en partes iguales, indicando un elemento de inicio, fin y un
pivote (o comodn) que nos permitir segmentar nuestra lista.
Una vez dividida, lo que hace, es dejar todos los mayores que el
pivote a su derecha y todos los menores a su izq. Al finalizar el
algoritmo, nuestros elementos estn ordenados.

7
Algoritmo rpido
(Quicksort)
Descripcin del algoritmo:
1) Dividir : Si la sequence S tiene 2 o ms elementos, seleccionar un
elemento x de S como pivote. Cualquier elemento arbitrario, como
el ltimo, puede servir. Elimiar los elementos de S dividindolos en
3 secuencias:
L, contiene los elementos de S menores que x
E, contiene los elementos de S iguales a x
G, contiene los elementos de S mayores que x
2) Recursin: De forma recursiva ordenar L y G
3) Vencer: Finalmente, colocar nuevamente los elementos en S en
orden, primero insertar los elementos de L, despus E, y los
elementos de G.

8
Caractersticas.
Es el algoritmo de ordenacin ms rpido (en la prctica) conocido. Su tiempo de
ejecucin promedio es O(N log(N)).
Para el peor caso tiene un tiempo O(N2 ), pero si se codifica correctamente las
situaciones en las que sucede el peor caso pueden hacerse altamente improbables.
EN la prctica, el hecho de que sea ms rpido que los dems algoritmos de
ordenacin con el mismo tiempo promedio O(N log(N)) est dado por un ciclo
interno muy ajustado (pocas operaciones).
Al igual que el algoritmo de ordenacin por intercalacin, el algoritmo de
ordenacin rpida es fruto de la tcnica de resolucin de algoritmos "divide y
vencers". Como ya se explic, la tcnica de divide y vencers se basa en, en cada
recursin, dividir el problema en subproblemas ms pequeos, resolverlos cada
uno por separado (aplicando la misma tcnica) y unir las soluciones.
Ejemplo
Por ejemplo, si tenemos 3 5 4 8 bsicamente lo que hace el algoritmo es dividir
la lista de 4 elementos en partes iguales, por un lado 3, por otro lado 4 8 y
como comodn o pivote el 5. Luego pregunta, 3 es mayor o menor que el
comodn? Es menor, entonces lo deja al lado izq. Y como se acabaron los
elementos de ese lado, vamos al otro lado. 4 Es mayor o menor que el pivote?
Menor, entonces lo tira a su izq. Luego pregunta por el 8, al ser mayor lo deja
donde esta, quedando algo as: 3 4 5 8
En esta figura se ilustra de mejor manera un vector con mas elementos, usando
como pivote el primer elemento:
Idea de Quick Sort
1) Seleccin: tomar un elemento

2) Dividir: reordenar los elementos


tal que x va a su posicin final E

3) Recursin y Vencer: ordenar


recursivamente

11
El algoritmo es el siguiente:
MergeSort (ordenamiento por mezcla)
Mergesort
Algoritmo de ordenacin divide y vencers:
1. Dividir nuestro conjunto en dos mitades. 2.
Ordenar recursivamente cada mitad. 3. Combinar las
dos mitades ordenadas: O(n).
Caractersticas.
Es un algoritmo recursivo con un nmero de
comparaciones mnimo. El tiempo de ejecucin
promedio es O(N log(N)).
Su desventaja es que trabaja sobre un array
auxiliar lo cual tiene dos consecuencias: uso de
memoria extra y trabajo extra consumido en las
copias entre arreglos (aunque es un trabajo de
tiempo lineal).
Es una aplicacin clsica de la estrategia para
resolucin de algoritmos "divide y vencers". Esta
estrategia plantea el hecho de que un problema
puede ser dividido en varios subproblemas y una
En cada recursin se toma un array de
elementos desordenados. Se lo divide en dos
mitades, se aplica la recursin en cada una de
estas y luego (dado que al finalizar estas
recursiones tenemos las dos mitades
ordenadas) se intercalan ambas para obtener el
array ordenado.
MergeSort (Example) - 1
MergeSort (Example) - 2
MergeSort (Example) - 3
MergeSort (Example) - 4
MergeSort (Example) - 5
MergeSort (Example) - 6
MergeSort (Example) - 7
MergeSort (Example) - 8
MergeSort (Example) - 9
MergeSort (Example) - 10
MergeSort (Example) - 11
MergeSort (Example) - 12
MergeSort (Example) - 13
MergeSort (Example) - 14
MergeSort (Example) - 15
MergeSort (Example) - 16
MergeSort (Example) - 17
MergeSort (Example) - 18
MergeSort (Example) - 19
MergeSort (Example) - 20
MergeSort (Example) - 21
MergeSort (Example) - 22
14 23 45 98 6 33 42 67
14 23 45 98 6 33 42 67

Merge
14 23 45 98 6 33 42 67

Merge
14 23 45 98 6 33 42 67

6 14

Merge
14 23 45 98 6 33 42 67

6 14 23

Merge
14 23 45 98 6 33 42 67

6 14 23 33

Merge
14 23 45 98 6 33 42 67

6 14 23 33 42

Merge
14 23 45 98 6 33 42 67

6 14 23 33 42 45

Merge
14 23 45 98 6 33 42 67

6 14 23 33 42 45 67

Merge
14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98

Merge
Ejemplo 2
Ordenacin por intercalacin: Merge Sort

Dividir en
el centro

Ordenar
recursivamente

Intercalar las
Soluciones
Ordenacin por intercalacin: Merge Sort

Llamada recursiva 1 (
MergeSort )
Llamada recursiva 2 (
MergeSort )
Llamada recursiva 3 (
MergeSort )
6 12 4 9 8 13 Volver 3 a 2 ( Combina )
5
4 6 9 12 5 Volver 2 a 1 ( Combina )
8 13
4 5 6 8 9 12 13Combina
LABORATORIO 2
Anexo

Vous aimerez peut-être aussi