UNIVERSIDAD AUTONOMA METROPOLITANA

Slides:



Advertisements
Presentaciones similares
Relaciones de recurrencia
Advertisements

DISTRIBUCIÓN DE BERNOULLI
Números reales/El valor absoluto.
EJEMPLO 14 De la corriente líquida que se indica en la siguiente figura, han de desorberse SO2 y butadienos (B3 y B2) con nitrógeno, de forma que el producto.
Programación de Computadores
Dra. Noemí L. Ruiz © Derechos Reservados
Unidad 8 Métodos de Búsqueda
Programación II Recursividad
Facultad de Ingeniería Ma. Teresa García Ramírez.
EJERCICIOS DE CÁLCULO MENTAL AUTOMÁTICO:
Funciones y recursividad
ALGORITMOS DE ORDENAMIENTO
INTERÉS: EL COSTO DEL DINERO
Sistemas de ecuaciones lineales
FACTORIZACIÓN DE POLINOMIOS.
4. Máquinas de Turing 4.1. Modelo básico.
MÉTODOS DE CLASIFICACION
PROGRAMACION DE ESTRUCTURAS DE DATOS
PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
Programación 1 Estructuras de control y pseudocódigo
ANALISIS SINTACTICO DESCENDENTE
 INTEGRANTES DEL EQUIPO:  JOSE IVAN FRUCTOUSO MACHORRO  ALEJANDRO ANASTACIO DE JESUS.

METODOLOGIA DE LA PROGRAMACION
TEMA 6: DIVISIÓN DE POLINOMIOS
Ejemplo 1: Observe que el factor m se repite en TODOS los términos. Extraemos m como factor común de la expresión.
2 Acciones y funciones 2.1 Concepto
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
1. FUNCIONES. LÍMITES. Depto. Matemáticas – IES Elaios
Teoría de lenguajes y compiladores
Matemáticas Discretas y Algoritmos
Estructuras de control
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
Tema 4: Sentencias de control
Material de apoyo Unidad 8 Estructura de datos
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
GRAFOS HUGO ARAYA CARRASCO.
Programación de Computadores
Grafos. Un Grafo G es un par de conjuntos (V, E), donde V es un conjunto no vacío de elementos llamados vértices o nodos y E es un conjunto formado por.
FORMULACIÓN DE ALGORITMOS
Semana 5 Subprogramas..
GABIELA ORTEGA VAZQUEZ MARIA DE JESUSU MONTALVO MTV.

Algoritmos.
Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado
Capítulo 1 “Elementos de Programación”
Diseño y análisis de algoritmos
Algoritmos de búsqueda
Ingeniería en Sistemas Computacionales Estructura de Datos
Material de apoyo Unidad 4 Estructura de datos
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Planteos Recursivos Resolución de Problemas y Algoritmos
1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
Análisis y Diseño de Algoritmos
Metodología para la construcción de programas
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
1 Quicksort Agustín J. González ELO320: Estructura de Datos y Algoritmos 1er. Sem
DIAGRAMA DE FLECHAS O RUTA CRITICA
Santiago Pachón Pedroza Jesús Arley Bolaños 1002
Elaboración de algoritmos usando lógica de programación
Conalep Coacalco Algoritmos Recursivos
MÓDULO INTRODUCCIÓN AL CICLO DE VIDA DEL SOFTWARE
3. Listas Lic. En C.C. Ann Margareth Meza Rodríguez.
- Máximo común divisor. - Máximo común múltiplo.
ESTUDIO DE SUS PARÁMETROS FUNDAMENTALES CATEDRA DE A MEDICIONES I 1.
Sistema Numérico Binario Prof. Carlos Ortiz Muñoz.
Presentado por: Yuli Domínguez. Portal Educativo El mentor de matemáticas Grupo Océano MÚLTIPLOS Y DIVISORES DE UN NÚMERO.
Búsqueda binaria Integrantes: Humberto Raíz Walter Gómez Isabel Hernández.
Transcripción de la presentación:

UNIVERSIDAD AUTONOMA METROPOLITANA QUICKSORT : METODO DE ORDENAMIENTO Tzitziki Ramirez Gonzalez Estructuras de Datos

Ordenamiento por intercambio de partición Sea x un arreglo y n el numero de elementos en el arreglo que debe de ser ordenado. Elegir un elemento “a” de una posicion especifica en el arreglo, bien podria ser la primera x[0]. Suponiendo que “a” se encuentra en la posicion j se deben de cumplir las siguientes condiciones que deben cumplirse son: Cada uno de los elementos de la posicion 0 a j-1 es menor o igual a “a” . Cada uno de los elemento en las posiciones j+1 a n-1 es mayor o igual que “a”. Estructuras de Datos

Ordenamiento por intercambio de partición Si el arreglo inicial es 25 57 48 37 12 92 86 33 Y el primer elemento( 25 ) se coloca en su posicion correcta tenemos 12 25 57 48 37 92 86 33 Como arriba de la posicion de( 25 ) todos son mayores que 25 y en las posiciones inferiores son menores, ( 25 )esta en la posicion correcta. 12 25 ( 57 48 37 92 86 33 ) Para ordenar el segundo subarreglo se repite el proceso y se vuelve a subdividir. Estructuras de Datos

Ordenamiento por intercambio de partición 12 25 ( 48 37 33 ) 57 ( 92 86 ) 12 25 ( 37 33 ) 48 57 ( 92 86 ) 12 25 ( 33 ) 37 48 57 ( 92 86 ) 12 25 33 37 48 57 ( 92 86 ) 12 25 33 37 48 57 ( 86 ) 92 12 25 33 37 48 57 86 92 En la ultima linea podemos observar que el arreglo ya ha sido ordenado. Estructuras de Datos

Es definir algo en terminos de si mismo. Recursividad Es definir algo en terminos de si mismo. Cualquier caso de definicion recursiva o invocacion de un algoritmo recursivo tiene que reducirse a la larga a alguna manipulacion de uno o varios casos mas simples no recursivos. Un requisito importante para que sea correcto un algoritmo recursivo es que no genere una secuencia infinita de llamadas a si mismo. Claro que cualquier algoritmo que genere tal secuencia no termina nunca. Una funcion recursiva f debe definirse en terminos que no impliquen a f al menos en un argumento o grupo de argumentos. Debe existir una “salida” de la secuencia de llamadas recursivas, sin esta salida no puede calculase ninguna funcion recursiva. Estructuras de Datos

Algoritmo - Quicksort Quik ( x, lb, ub ) { If ( lb >=ub ) Return; Arreglo ordenado Particion( x, lb, ub, j ) Dividir los elemntos del subarreglo de tal manera que uno de ellos ( posiblemente x [lb], este ahora en x [j] ; j es un parametro de salida ), y : 1. x[i] <= x[j] para lb<= i < j 2. x[i] >= x[j] para j < i <=ub x[j] esta ahora en su posicion final Quik ( x, lb, j -1 ) Ordenar el subarreglo en forma recursiva entre las posiciones lb y j – 1 Quik( x, j +1, ub ) Ordenar el subarreglo en forma recursiva entre las posiciones j + 1 y ub } Estructuras de Datos

Algoritmo - Partición Particion ( x, lb, ub, pj ) a= x[lb]; “a” es el elemento cuya posicion final se busca up=ub; down=lb; While ( down < up ){ while ( x [down] <= a && down < ub) recorrer limite superior del arreglo down ++; while ( x [up ] > a ) recorrer limite inferior del arreglo up - -; if ( down < up ){ intercambiar x [down] y x [ up] temp = x [down]; x [down] = x [up]; x [up] = temp; } x [lb] = x [up]; x [up] = a; *pj = up; Estructuras de Datos

Eficiencia – Arreglo desordenado Asumiendo que el archivo de tamaño n es una potencia de 2, digamos n = 2m, por lo que m = log2 n. Asumiendo también que la posición correcta para el elemento pivote siempre cae en la mitad del subarreglo. En ese caso habrá aproximadamente n comparaciones (en realidad n-1) en la primera pasada, después de eso el archivo se parte en dos subarchivos de tamaño n/2, aproximadamente. Para cada uno de estos dos archivos se hacen aproximadamente n/2 comparaciones, y un total de 4 archivos de tamaño n/4. Después de dividir los subarchivos m veces, habrá n archivos de tamaño 1. Así que el número total de comparaciones para la ordenación completa es aproximadamente: n + 2 * (n / 2) + 4 * (n / 4) + 8 * (n / 8) + ... + n * (n / n) o n + n + n + ... + n (m veces) comparaciones. Son m términos por que el archivo se subdivide m veces. Así que el número total de comparaciones es O(n * m) o O(n log n) (recordando que m = log2 n) (Tomamos el primer elemento del arreglo como pivote y este encontrara su posicion en la mitad del subarreglo ) Estructuras de Datos

Eficiencia - Arreglo Ordenado Si, por ejemplo, tomamos el primero elemento del subarreglo (que ya está en su posición correcta), entonces el archivo original se divide en dos subarchivos de tamaño 0 y n-1. Si el proceso continúa, se obtendrán un total de n-1 subarchivos. El primero de tamaño n, el que sigue de n-1, el siguiente de tamaño n-2, y así sucesivamente. Asumiendo k comparaciones para reordenar un archivo de tamaño k, el número total de comparaciones para ordenar el archivo completo es: n + (n – 1) + (n – 2) + ... + 2 que es O(n2). De manera similar si el archivo está ordenado en orden descendente se hacen particiones muy desbalanceadas. Así que la versión original de QuickSort tiene la absurda propiedad que trabaja mejor con archivos que están completamente desordenados y peor para archivos que están completamente ordenados. La situación es precisamente lo opuesto a “la burbuja”, que trabaja mejor para archivos ordenados y peor para archivos desordenados. Estructuras de Datos