Académique Documents
Professionnel Documents
Culture Documents
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
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