Title: Tzitziki Ramirez Gonzalez
1UNIVERSIDAD AUTONOMA METROPOLITANA
QUICKSORT METODO DE ORDENAMIENTO
Tzitziki Ramirez Gonzalez
Estructuras de Datos
2Ordenamiento 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 x0. - 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 j1 a
n-1 es mayor o igual que a.
Estructuras de Datos
3Ordenamiento 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
4Ordenamiento 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
5Recursividad
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
6Algoritmo - Quicksort
Quik ( x, lb, ub ) If ( lb gtub )
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. xi lt xj para lblt i lt
j 2. xi gt xj para j lt i ltub xj
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
7Algoritmo - Partición
Particion ( x, lb, ub, pj ) a xlb
a es el
elemento cuya posicion final se
busca upub downlb While ( down lt up ) while
( x down lt a down lt ub) recorrer limite
superior del arreglo down while ( x up
gt a ) recorrer limite inferior del
arreglo up - - if ( down lt 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
8Eficiencia 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
9Eficiencia - 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