Вы находитесь на странице: 1из 11

INSTITUTO TECNOLOGICO DE SALINA CRUZ

NOMBRE DEL ALUMNO: VICTOR MIGUEL REYES HERNANDEZ

DOCENTE: M.C. SUSANA MONICA ROMAN NAJERA

MATERIA: ESTRUCTURA Y ORGANIZACIN DE DATOS

ACTIVIDAD: INVESTIGACION DOCUMENTAL SOBRE METODOS DE


ORDENAMIENTO Y BSQUEDA (QUICKSORT)

NUMERO DE CONTROL: 131020108

CARRERA: INGENIERIA EN TECNOLOGIAS DE LA INFORMACION Y DE


LAS COMUNICACIONES

GRADO: 3 SEMESTRE

SALINA CRUZ, OAXACA

GRUPO: 3E

DICIEMBRE DEL 2014

INDICE
INTRODUCCION .............................................................................................................................. 3
CONCEPTO E IMPLEMENTACION ............................................................................................. 4
CODIGO EJEMPLO QUICKSORT ................................................................................................ 6
ORDEN DEL ALGORITMO ............................................................................................................ 8
CONCLUSIONES ........................................................................................................................... 10
BIBLIOGRAFIA CONSULTADA (OTRAS FUENTES) ............................................................. 11

INTRODUCCION

EN ESTE TEMA ANALIZAREMOS EL USO DEL ALGORITMO DE QUICKSORT.


SI BIEN ES INTERESANTE SABER SU IMPLEMENTACION, ES IMPORTANTE
RECORDAR QUE ESTO TAMBIEN TIENE UN FACTOR EN COMUN A LA
RECURSIVIDAD.
AL SER UN METODO DE ORDENAMIENTO RAPIDO, ESTO IMPLICA LA
NECESADAD DEL VASTO ESPACIO DE MEMORIA DE LA COMPUTADORA Y
QUE ADEMAS EN TERMINOS DE TIEMPO ES MAS EFICIENTE AL METODO
BURBUJA.
SIN EMBARGO CABE RECALCAR QUE SI BIEN ES RECURSIVO TAMBIEN
PODEMOS HACERLO ITERATIVO Y ESTO ES PARA MAS QUE NADA PARA
QUE NO HAYA UN EVENTO QUE HAGA PRODUCIR UNA INCONSISTENCIA
EN SU USO.
PUESTO QUE SE EMPLEA EN LENGUAJE DE PROGRAMACION ORIENTADO
A OBJETOS ES NECESARIO SABER COMO PODERLO LLEVAR A LA
PRACTICA Y QUE ES LO QUE SE EXPLICARA A CONTINUACION.

CONCEPTO E IMPLEMENTACION
El ordenamiento rpido (quicksort en ingls) es un algoritmo creado por el
cientfico britnico en computacin C. A. R. Hoare basado en la tcnica de divide y
vencers, que permite, en promedio, ordenar n elementos en un tiempo
proporcional a n log n.
Para comprender bien cmo funciona el quicksort hay tener claros estos
conceptos:
Pivote: Es un nmero del arreglo que tomaremos como referencia para
reorganizar el arreglo de nmeros y ordenarlo.
En pocas palabras tomamos todos los nmeros mayores que el que hayamos
elegido como pivote y los colocamos a la derecha del mismo, y todos los que sean
menores que este los colocamos del lado izquierdo.
Punteros izquierdo y derecho: El quicksort utiliza 2 punteros como referencia,
uno izquierdo y uno derecho, normalmente cuando se ordena de menor a mayor el
izquierdo

simboliza

el

lado

de nmeros menores

el

derecho

los nmeros mayores.


A medida que analizamos el arreglo, los punteros se acercan el uno a otro y
cuando se encuentran en una ubicacin se coloca en esta el pivote y se separa el
arreglo en 2 arreglos ms pequeos.
Posteriormente se vuelve a aplicar el algoritmo a los arreglos ms pequeos hasta
que se logre ordenar la secuencia tal.
Los pasos que realiza este algoritmo son:
Selecciona un valor del arreglo como pivote es decir un numero por el cual
todos los elementos van a ser comparados.

Se realizan dos bsquedas: una de izquierda a derecha, buscando un


elemento mayor que el pivote, y otra de derecha a izquierda, buscando un
elemento menor que el pivote. Cuando se han encontrado los dos, se
intercambian, y se sigue realizando la bsqueda hasta que las dos
bsquedas se encuentran.
Luego se organizan los subarreglos que quedaron a mano derecha e
izquierda.
La implementacin del mtodo de ordenacin Quicksort es recursiva.
Suponiendo que tomamos como pivote el primer elemento, el mtodo Java
Quicksort que implementa este algoritmo de ordenacin para ordenar un array de
enteros se presenta a continuacin. Los parmetros izquierda y derecha son el
primer y ltimo elemento del array a tratar en cada momento.
El mtodo ordena un array A de enteros desde la posicin izquierda hasta la
posicin derecha.
En la primera llamada recibir los valores izquierda = 0, derecha = ELEMENTOS1.

CODIGO EJEMPLO QUICKSORT

public static void quicksort(int A[], int izq, int der) {

int pivote=A[izq]; // tomamos primer elemento como pivote


int i=izq; // i realiza la bsqueda de izquierda a derecha
int j=der; // j realiza la bsqueda de derecha a izquierda
int aux;

while(i<j){

// mientras no se crucen las bsquedas

while(A[i]<=pivote && i<j) i++; // busca elemento mayor que pivote


while(A[j]>pivote) j--;
if (i<j) {
aux= A[i];

// busca elemento menor que pivote


// si no se han cruzado
// los intercambia

A[i]=A[j];
A[j]=aux;
}
}

A[izq]=A[j]; // se coloca el pivote en su lugar de forma que tendremos


A[j]=pivote; // los menores a su izquierda y los mayores a su derecha
if(izq<j-1)
quicksort(A,izq,j-1); // ordenamos subarray izquierdo
if(j+1 <der)
quicksort(A,j+1,der); // ordenamos subarray derecho
}

De forma grfica el proceso sera el siguiente:

Una alternativa a elegir el primer elemento es elegir como pivote un elemento al


azar de entre todos los del array.
Otra estrategia es calcular la mediana de los valores de la izquierda, centro y
derecha del vector.
Por ejemplo para el vector: 9 8 1 6 10 2 3, se calcula la mediana de los elementos
que ocupan el primer lugar, el ltimo y el centro o sea 9 3 6. La mediana es 6 que
determinara las particiones {1 3 2} {6} {8 10 9}.

ORDEN DEL ALGORITMO

Tiempo de Ejecucin:
Caso promedio. La complejidad para dividir una lista de n es O(n).
Cada sublista genera en promedio dos sublistas ms de largo n/2.
Por lo tanto la complejidad se define en forma recurrente como:

f(1) = 1

f(n) = n + 2 f(n/2)

La forma cerrada de esta expresin es:

f(n) = n log2n

Es decir, la complejidad es O(n log2n).

El peor caso ocurre cuando la lista ya est ordenada, porque cada llamada genera slo
una sublista (todos los elementos son menores que el elemento de divisin).
En este caso el rendimiento se degrada a O(n).

Ventajas:

Muy rpido

No requiere memoria adicional.

Desventajas:

Implementacin un poco ms complicada.

Recursividad (utiliza muchos recursos).

Mucha diferencia entre el peor y el mejor caso.

CONCLUSIONES
LA CONCLUCION A ES TEMA FUE APARTE DE LA IMPLEMENTACION QUE
SE OCUPA EN ELLA, TAMBIEN SOBRE LOS FACTORES QUE HACEN EN SU
USO COMO, EXPLICANDO TECNICAS PARA PODER LLAMAR AL PIVOTE EN
DADO CASO QUE LO REQUERAMOS.
NO OBSTANTE LA PARTE DEL CONCEPTO EXPLICA A LAS DUDAS QUE
HABRIA DE CIERTO MODO Y QUE A SU VEZ NOS DARIA UNA IMAGEN EN LA
CABEZA SOBRE QUE PASA EN ESE MOMENTO.
CABE RECALCAR EL USO QUE NOSOTROS LE ESTEMOS DANDO EN
NUESTRO PROGRAMA AL REALIZAR, SIN IMPORTA QUE SEA RECURSIVA O
ITERATIVA, SIEMPRE SE TENDRA UN RESULTADO QUE SE ASEMEJE A LO
BUSCADO POR NOSOTROS.
SIN EMBARGO HABRA QUE CONSIDERAR EL TIEMPO QUE SE TOMA EN
EJECUCION DEL PROGRAMA, SI ES RECURSIVO CON MAS RAZON SE
TARDARA MENOS Y SI ES ITERATIVO SI SE DEMORARA UNOS SEGUNDOS.

BIBLIOGRAFIA CONSULTADA (OTRAS FUENTES)

QUICKSORT. EN LINEA. PAGINA CONSULTADA 01 DE DICIEMBRE DE 2014

DISPONIBLE EN: http://es.wikipedia.org/wiki/Quicksort


ALGORITMO DE ORDENAMIENTO. EN LINEA. PAGINA CONSULTADA 01 DE
DICIEMBRE
DE
2014
DISPONIBLE
EN:
http://codigoprogramacion.com/cursos/java/109-algoritmo-deordenamientoquicksort.html#.VH1CTjGG82U
JAVA QUICKSORT. EN LINEA. PAGINA CONSULTADA 01 DE DICIEMBRE DE 2014
DISPONIBLE EN: http://puntocomnoesunlenguaje.blogspot.mx/2012/12/javaquicksort.html
LOS TRES METODOS DE ORDENAMIENTO MS POPULARES. EN LINEA. PAGINA
CONSULTADA 01 DE DICIEMBRE DE 2014 DISPONIBLE EN: http://gl-epnprogramacion-ii.blogspot.mx/2010/06/metodos-de-ordenamiento.html
ALGORITMO QUICKSORT. EN LINEA. PAGINA CONSULTADA 01 DE DICIEMBRE DE
2014 DISPONIBLE EN: https://sites.google.com/site/quicksortalgoritmo/orden-delalgoritmo

Вам также может понравиться