1 / 9

Tzitziki Ramirez Gonzalez

UNIVERSIDAD AUTONOMA METROPOLITANA. QUICKSORT : METODO DE ORDENAMIENTO. Tzitziki Ramirez Gonzalez. Estructuras de Datos. Ordenamiento por intercambio de partición.

les
Download Presentation

Tzitziki Ramirez Gonzalez

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

More Related