1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem. 2003.

Slides:



Advertisements
Presentaciones similares
Diseño y análisis de algoritmos
Advertisements

Diseño y análisis de algoritmos
Sistemas Operativos Gestión de Memoria.
ALGORITMOS DE ORDENAMIENTO
1 Extensión de un Estructura de Datos Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Diseño y análisis de algoritmos
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Seminario de Actualización - Excel Avanzado y Macros
Ordenación rápida (QuickSort)
Bloque 2: Divide y Vencerás
Algoritmos Aleatorizados
Método de Ford-Fulkerson
Solución de ecuaciones no lineales
Algoritmos de ordenación
UNIVERSIDAD AUTONOMA METROPOLITANA
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
Unidad II Aplicaciones con Arreglos en Java y C++
Ordenamiento, Heapsort y Colas de prioridad
Clases 4 Pruebas de Hipótesis
M.C. Yalu Galicia Hdez. (FCC/BUAP)
Análisis de Algoritmos
Single-Source Shortest Paths “Camino más corto desde/hacia una fuente”
Estructuras de Datos Arreglos.
COMPUTACION 2009 Clase 6 Clase 7.
Algoritmos de búsqueda
ELO3201 Vectores (Vector) Agustín J. González ELO320.
Ingeniería en Sistemas Computacionales Estructura de Datos
Administración de Memoria
Divide y vencerás 1. Método general.
Ordenación y Búsqueda.
1 Algoritmos Avaros (Greedy Algorithms) Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
EXPRESIONES Y SENTENCIAS
Diseño y análisis de algoritmos Clasificación II.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
1 Algoritmos Avaros (Greedy Algorithms) Agustín J. González ELO-320: Estructura de Datos y Algoritmos 1er. Sem
Árboles de Búsqueda Binaria
Medianas y Estadísticas de Orden
1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
1. Desarrollo de Programas iterativos usando invariante
Agustín J. González ELO320: Estructura de Datos y Algoritmos
ELO3201 Análisis de Algoritmos (Cont.) Agustín J. González ELO320 1º sem 2004.
1 Ordenamiento y estadísticas de orden Agustín J. González ELO 320: Estructura de Datos y Algoritmos.
1 Ordenamiento en tiempo lineal y Estadísticas de orden Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem 2002.
Algoritmos de Ordenamiento y Complejidad
Quick Sort Estructura de Datos: Métodos de ordenamiento. José Alejandro Leal González Verito no m c tu nombre completo jejeje aquí va!!!
Parte I. Estructuras de Datos.
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
1 Single-Source Shortest Paths “Camino más corto desde/hacia una fuente” Agustín J. González ELO320: Estructura de Datos y Algoritmos 1.er. Sem
Minimum Spanning Tree (Árbol de Expansión Mínima)
1 Análisis de algoritmos Generalidades Agustín J. González 1er. Sem
Análisis de Algoritmos
ELO3201 Análisis de Algoritmos (cont.) Agustín J. González ELO320 1º sem 2002.
1 Flujo Máximo Agustín J. González ELO320: Estructura de Datos y Algoritmos.
1 Árboles de Búsqueda Binaria Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
Análisis de algoritmos Generalidades
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Conalep Coacalco Algoritmos Recursivos
Envolvente convexa Parte 1: Algoritmos
Simulación de un AFD Conversión de un AFND a un AFD.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
INTERVALOS APARENTES ¿Cómo se obtienen?.  *1 ER paso.- Obtener el numero máximo y el mínimo de la tabulación
1 Ordenando. 2 Sorting Input Una secuencia de numeros a 1, a 2, a 3, …, a n Output Una permutación (reorden) a’ 1, a’ 2, a’ 3, …, a’ n de la input, tal.
2. Arreglos e invariantes. Arreglos Un arreglo es una coleccion ordenada de elementos del mismo tipo – Tipos de datos primitivos (int, …) – Referencias.
Ingeniería en Sistemas
Curso de Programación Estructurada
Curso de Programación Estructurada
Transcripción de la presentación:

1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem. 2003

2 Quicksort Descripción Quicksort, como Mergesort, está basado en el paradigma “dividir y conquistar”. Pasos: –Dividir: el arreglo se particiona en dos sub-arreglos no vacíos, tal que cada elemento de un sub-arreglo sea menor o igual a los elementos del otro sub-arreglo. –Conquistar: los dos arreglos son ordenados llamando recursivamente a quicksort. –Combinar: Como cada arreglo ya está ordenado, no serequiere trabajo adicional. Algoritmo Quicksor(A,p,r){ if (p<r) { q = Partition(A,p,r); Quicksort(A,p,q); Quicksort(A,q+1, r); } }

3 Partition Partition(A,p,r) { x=A[p]; i=p-1; j=r+1; while(1) { do j--; until (A[j]  x) do i++; until (A[i]  x) if (i A[j]; else return j; } } Quicksort(A,p,r){ if (p<r) { q = Partition(A,p,r); Quicksort(A,p,q); Quicksort(A,q+1, r); } }

4 Explicación Partition efectúa una tarea simple: poner los elementos menores o igual que A[p] en la región inferior del arreglo y los elementos mayores o igual al otro lado.. i parte del extremo inferior del arreglo y j parte del extremo superior. Cada puntero avanza hacia el extremo opuesto buscando elementos que deba mover hacia el otro extremo. j avanza primero. Cuando estos elementos son encontrados, son intercambiados. Si estos elementos no son encontrados, i terminará igual o superior a j. 5 | 3 | 2 | 6 | 4 | 1 | 3 | 7 ij ij 3 | 3 | 2 | 6 | 4 | 1 | 5 | 7 ij i j 3 | 3 | 2 | 1 | 4 | 6 | 5 | 7 i j ij Retorna j

5 Observaciones Los índices i y j nunca acceden al arreglo fuera de rango. A[p] debe ser el “pivote”. Si se tomara A[r] y ocurre que éste es el mayor valor, Partition retornaría q=r y Quicksort estaría en un loop infinito. Rendimiento de Quicksort: Partition tiene costo  (n). Partición de peor caso: Ocurre cuando el arreglo es particionado en n-1 y 1 elemento cada vez. En este caso se tiene: T(n)=T(n-1) +  (n) = Partición de mejor caso: Ocurre cuando Partition produce dos regiones de igual tamaño. En este caso se tiene: T(n)=2T(n/2)+  (n), de lo cual resulta T(n) =  (n lg n) (caso 2 teorema maestro)

6 Observaciones Si consideramos que la partición conduce a arreglos desbalanceados en proporción 9 : 1, de todas formas el algoritmo toma tiempo  (n lg n). En este caso T(n) = T(9n/10) +T(n/10) +  (n) n n n/109n/10 n n n/100 9n/100 81n/100 1 nn nn 1 El caso promedio también conduce a tiempos  (n lg n).

7 Versión “Aleatorizada” de Quicksort Objetivo: Lograr buen desempeño aun cuando la entrada no sea aleatoria. Idea: Tomar aleatoriamente un elemento dentro del arreglo y usarlo como pivote. Randomized_Partition(A,p,r) { i = random(p,r); /* retorna un valor en el rango [p,r] */ exchange A[p] A[i]; return Partition(A, p, r); } Ramdomized_Quicksort(A,p,r) { if (p < r) { q = Randomized_Partition(A,p,r); Randimized_Quicksort(A, p, q); Randomized_Quicksort(A, q+1, r); } }