Sie sind auf Seite 1von 33

METODO QUICK SORT

• La idea del algoritmo conocido


como quicksort (ordenación rápida)
es simple, se basa en la división en
particiones de la lista a ordenar, por
ello se puede considerar que aplica
la técnica "divide y vencerás". El
método es, posiblemente, el más
pequeño de código, más rápido,
más elegante y más interesante y
eficiente de los algoritmos
conocidos de ordenación.
• Donde:
x: Es el pivote.
v[]: El vector de elementos
r: Posición final del arreglo
l: Posición final del arreglo
j e i: Iteradores
temp: Temporal
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 7 6 2 1 4

v[0] v[1] v[2] v[3] v[4] v[5] v[6]


i j
l=0, r=6;
i=0, j=6;
5<6 && 0<6;
Entonces pasa al siguiente y el i aumenta en 1
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 7 6 2 1 4

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

i j

3<6 && 1<6;


Entonces pasa al siguiente y el i aumenta 1
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 7 6 2 1 4

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

i j

7<6 && 1<6;


Como no se cumple pasamos al segundo while
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 7 6 2 1 4

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

i j

4>6 && 6>0;


Como no se cumple pasamos a la sentencia if para cambiarlos
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 6 2 1 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

i j

aumentamos en 1 el ‘i’ y disminuimos en 1 el ‘j’


METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 6 2 1 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

i j
Volvemos a repetir:
6<6 && 3<6;
Como no se cumple pasamos al siguiente while
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 6 2 1 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

i j

1>6 && 5<0;


Como no se cumple pasamos a las sentencia if para intercambiar
Valores
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 61 2 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

i j

aumentamos el ‘i’ y disminuimos el ‘j’ en 1


METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 1 2 6 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

j
Y volvemos a repetir
2<6 && 4<0;
Como no se cumple pasamos a la siguiente while
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 1 2 6 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

2>6 && 4>0;


Como no se cumple pasamos a la condición if para hacer
el intercambio
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 1 26 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

2>6 && 4>0;


aumentamos ‘i’ en 1 y disminuimos el ‘j’ en 1
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 1 2 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

j i

Luego:
Como no se cumple 5<=3 entonces salimos del do while.
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 1 2 7

v[0] v[1] v[2] v[3] v[4] v[5] v[6]

j i

La primera condición if (3<0) no se cumple y pasamos a la siguiente.


La segunda condición if (0<3) se cumple y entonces analizaremos
los elementos a la izquierda del pivote.
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 1 2

v[0] v[1] v[2] v[3] v[4]

i j
l=0, r=4;
i=0, j=4;
5<4 && 0<4;
Como no se cumple entonces pasa al siguiente while
METODO QUICK SORT
• Proceso
Vector
Pivote
x

5 3 4 1 2

v[0] v[1] v[2] v[3] v[4]

i j

2>4 && 0>4;


Como no se cumple entonces pasa a la condición if para cambiar
valores
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 4 1 5

v[0] v[1] v[2] v[3] v[4]

i j

aumentamos el ‘i’ en 1 y disminuimos el ‘j’ en 1


METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 4 1 5

v[0] v[1] v[2] v[3] v[4]

i j

Y volvemos a repetir:
3<4 && 1<4;
Como se cumple entonces aumentamos el ‘i’ en 1
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 4 1 5

v[0] v[1] v[2] v[3] v[4]

i j

4<4 && 2<4;


Como no se cumple pasamos al siguiente while.
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 4 1 5

v[0] v[1] v[2] v[3] v[4]

i j

1>4 && 3<0;


Como no se cumple pasamos a la condición if para cambiar valores
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 14 5

v[0] v[1] v[2] v[3] v[4]

i j

y aumentamos el ‘i’ en 1 y disminuimos en 1 el ‘j’.


METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 1 5

v[0] v[1] v[2] v[3] v[4]

j i

Como la condición (3<=2) no se cumple entonces salimos del do while-


Como la condición if(3<0) no se cumple pasamos a la siguiente.
Como la condición if (0<2) se cumple entonces analizamos los datos
que están a la izquierda del pivote.
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 1

v[0] v[1] v[2]

i j
l=0,r=2;
i=0,j=2;
2<3 && 0<2;
Como se cumple aumentamos el ‘i’ en uno.
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 1

v[0] v[1] v[2]

i j

3<3 && 1<0;


Como no se cumple pasamos al siguiente while.
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 3 1

v[0] v[1] v[2]

i j
1>6 && 2>0;
Como no se cumple pasamos a la condición if para cambiar
valores
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 31

v[0] v[1] v[2]

i j
aumentamos ‘i’ en 1 y disminuimos el ‘j’ en 1
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 1 1

v[0] v[1] v[2]

j i
Como no se cumple (2<=1) entonces salimos del do while.
La primera condición if (2<0) no se cumple y pasamos a la siguiente.
La segunda condición if (0<1) se cumple y entonces analizaremos
los elementos a la izquierda del pivote.
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 1

v[0] v[1]

i j
l=0,r=1;
i=0,j=1;
2<2 && 0<0;
Como no se cumple pasa al segundo while.
METODO QUICK SORT
• Proceso
Vector
Pivote
x

2 1

v[0] v[1]

i j
l=0,r=1;
1>2 && 1>0;
Como no se cumple pasa al condicional if a hacer el intercambio
METODO QUICK SORT
• Proceso
Vector
Pivote
x

1
2

v[0] v[1]

i j
aumentamos ‘i’ en 1 y disminuimos el ‘j’ en 1
METODO QUICK SORT
• Proceso
Vector
Pivote
x

1 1

v[0] v[1]

j i
Como no se cumple (1<=0) entonces salimos del do while.
La primera condición if (1<0) no se cumple y pasamos a la siguiente.
La segunda condición if (0<0) no se cumple entonces el programa
finaliza.
METODO QUICK SORT

• Finalmente al unir todas las partes nos quedaría el vector ordenado

1 2 3 4 5 6 7

Das könnte Ihnen auch gefallen