Title: QUICKSORT
1QUICKSORT
- Declaremos un arreglo de 9 posiciones con numeros
aleatorios...
2QUICKSORT
Declaramos el primer elemento del arreglo como
primero Y al ultimo como ultimo.
Primero
Ultimo
3QUICKSORT
Ultimo
Primero
Pivote
Declaramos el primero como el pivote del arreglo.
4QUICKSORT
Pivote 44
Ultimo
Primero
Up
Down
Colocamos a Up como Primero y Down como Ultimo.
5QUICKSORT
Pivote 44
Ultimo
Primero
Up
Up
Down
Muevo Up al primer valor mayor que el pivote
Despues movemos Down al primer valor de derecha a
izquierda menor que el pivote (en este caso Down
no se mueve).
6QUICKSORT
Pivote 44
Ultimo
Primero
Up
Down
Ahora intercambiamos los valores de Up y Down
7QUICKSORT
Pivote 44
Primero
Ultimo
Up
Down
Desde la posicion en que se encuentra movemos Up
a un valor mayor que el pivote.
Primero
Ultimo
Up
Down
8QUICKSORT
Pivote 44
Primero
Ultimo
Down
Up
Down
Cambiamos Down a la posicion menor que el pivote
recorriendo de Derecha a Izquierda
9QUICKSORT
Pivote 44
Primero
Ultimo
Down
Up
Down
Intercambiamos los valores de Up y Down
10QUICKSORT
Pivote 44
Primero
Up
Down
Ultimo
Movemos Up desde la posicion en que se encuetra a
la primera posicion mayor que el pivote y Down a
la primera posicion de derecha a Izquierda menor
que el pivote.
Primero
Up
Down
Ultimo
11QUICKSORT
Como Up y Down se cruzaron, entonces debemos
intercambiar el valor de Down por el pivote.
Pivote 44
Primero
Down
Ultimo
PivIndex
Ahora notemos que todos los valores debajo de
PivIndex son menores que el y los que estan por
encima son mayores que el.
12QUICKSORT
Esto nos da ahora dos nuevos subarreglos que hay
que ordenar
Primero 1
Ultimo 1
Primero 2
Ultimo 2
PivIndex
Se debe repetir el proceso hasta que los
subarreglos estén ordenados, lo cual nos dará
como resultado el arreglo ordenado.
13QUICKSORT
- El algoritmo del método de ordenamiento estará
formado por tres procesos - QuickSort, proceso que inicia el ordenamiento.
- Encuentra Pivote, busca el mejor pivote a partir
del primer elemento del vector - Partición, va comparando por ambos extremos e
intercambia en caso de ser necesario -
14QUICKSORT
- Inicio quicksort( i , j enteras)
- indice-pivote?encuentra-pivote( i , j)
- Si indice-pivote lt gt 0 entonces
- 3.1 pivote ? Aindice-pivote.data
- 3.2 k?particion( i , j , pivote)
- 3.3 quicksort( i , k 1)
- 3.4 quicksort(k , j )
- Fin quicksort
15QUICKSORT
1. Inicio encuentra-pivote( i , j enteras) 2.
primera-clave?Ai.data 3. Para k? i 1 hasta j
hacer 3.1 Si ak.data gt primera-clave
entonces returna k de lo contrario, Si
Ak.data gt primera-clave entonces returna i 4.
returna 0 5. Fin
16QUICKSORT
1. Inicio partición( i , j enteras,
pivotetipo-clave) entero 2. z? i 3. d?j 4.
Repetir intercambiar(Az,Ad) Mientras
Az.data lt pivote hacer z ? z 1 Mientras
Ad.data gt pivote hacer d? d 1 hasta z
gt d 4. returna z 5. Fin
17(No Transcript)