informe quicksort

15
INTEGRANTES: Rodrigez Urquiaga, Roberto Saldaña Altamirano, Keven Marquez Zavaleta, Samuel Moreno Chavez Daniel Mantilla Santa Cruz Luis

Upload: samuel-marquez-zavaleta

Post on 03-Jul-2015

1.694 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: INFORME Quicksort

INTEGRANTES:

Rodrigez Urquiaga, Roberto Saldaña Altamirano, Keven Marquez Zavaleta, Samuel Moreno Chavez Daniel Mantilla Santa Cruz Luis

CUADROS DE EVALUACION:

Page 2: INFORME Quicksort

INTEGRANTES/ITEMSCONOCIMIENTO DESENVOLVIMIENTO MATERIAL COMPORTAMIENTO

TOTAL(5 ptos) (5 ptos) (5 ptos) (5 ptos)

Márquez Zavaleta, Samuel

Mantilla Santa Cruz, Luis

Saldaña Altamirano, Keven

Rodríguez Urquiaga, Roberto

Moreno Chávez, Daniel

ITEMS P.M. PUNTAJE

CARATULA 1

RESUMEN 4

INTRODUCCION 2

CONTENIDO 7

CONCLUSIONES 3

RECOMENDACIONES 2

REFERENCIAS 1

TOTAL 20

1. RESUMEN:

Page 3: INFORME Quicksort

En este informe detallaremos principalmente un algoritmo de ordenación que es probablemente el más utilizado de todos, nos referimos a la Ordenación Rápida (QUICKSORT).

El algoritmo básico fue creado en 1960 por C.A.R. Hoare y publicado en 1962 y desde entonces ha sido estudiado objeto de numerosos estudios. El Quicksort es popular porque a pesar de su no tan fácil implementación, proporciona unos buenos resultados generales (funciona bien en una amplia diversidad de situaciones) y en muchos casos consume menos recursos que cualquier otro método de ordenación, por cual el método ha sido posiblemente calificado como el mas pequeño código, más rápido, más elegante, más interesante y eficiente de los algoritmos conocidos de ordenación.

La idea central de este algoritmo consiste en los siguiente: - Se toma un elemento x de una posición cualquiera del arreglo. - Se trata de ubicar a x en la posición correcta del arreglo, de tal forma que todos los elementos que se encuentran a su izquierda sean menores o iguales a x y todos los -elementos que se encuentren a su derecha sean mayores o iguales a x.- Se repiten los pasos anteriores pero ahora para los conjuntos de datos que se encuentran a la izquierda y a la derecha de la posición correcta de x en el arreglo.

El análisis ha sido comprobado por una extensa experiencia empírica hasta el punto de convertirse en el método elegido en una gran variedad de aplicaciones prácticas de ordenación teniendo así una complejidad en el mejor caso de grado n.logn y peor caso de grado n

Desde su creación han intentado y analizado nuevas versiones del algoritmo, pero es fácil decepcionarse porque este algoritmo esta bien equilibrado, que las mejoras en una parte del programa pueden estar mas que compensados por las consecuencias de un mal rendimiento de otra pero por eso no mejoran sustancialmente a Quicksort.

2. INTRODUCCIÓN.

Page 4: INFORME Quicksort

Ordenación y Búsqueda son operaciones básicas en el campo de la documentación y en las que según señalan estadísticas, las computadoras emplean la mitad de su tiempo.

Aunque su uso puede ser con vectores y con archivos, nos referiremos a vectores.

La ordenación (clasificación) es la operación de organizar un conjunto de datos en algún orden dado, tal como creciente o decreciente en datos numéricos, o bien en orden alfabético directo o inverso. Operaciones típicas de ordenación son: lista de números, archivos de clientes de banco, nombres de una agenda telefónica, etc. En síntesis la ordenación significa poner objetos en orden (orden numéricos para los números y alfabético para los caracteres) ascendente o descendente.

Por ejemplo, las clasificaciones de los equipos de fútbol, se pueden organizar en orden alfabético creciente/decreciente o bien por su puntaje obtenido ascendente/descendente. El propósito final de la clasificación es facilitar la manipulación de datos en un vector.

Existen diversos métodos de ordenación o clasificación, con diferentes ventajas e inconvenientes donde debemos tener en cuenta las eficiencias en cuanto al tiempo siendo método quicksort uno de ellos, que abarcaremos principalmente aplicados a vectores pero se pueden extender a matrices o tablas, considerando la ordenación respecto a fila o columna, quicksort nos permitirá ordenar vectores con un gran número de elementos y manipular dicho vector.

3. CONTENIDO:

3.1.ORIGEN.

Inventado por Sir Charles Antony Richard Hoare ( científico Británico en computación) en 1960, cuando visitó la Universidad de Moscú cuando era estudiante . Él creó el “ Quicksort” al intentar traducir un diccionario de inglés para ruso, ordenando las palabras, teniendo cómo objetivo reducir el problema original en subproblemas que puedan ser resueltos más fácil y rápidamente. Fue publicado en 1962 después de una serie de afinamientos.

3. 2.DEFINICION.

El ordenamiento rápido (quicksort en inglés) es un algoritmo basado en la técnica de divide y vencerás, que permite, en promedio, ordenar “n” elementos en un tiempo

Page 5: INFORME Quicksort

proporcional a n*log(n). Esta es la técnica de ordenamiento más rápida conocida. El algoritmo original es recursivo, pero se utilizan versiones iterativas para mejorar su rendimiento.

Dividir: el arreglo se particiona en dos sub-arreglos no vacíos, tal que cada elemento de un sub-arreglo sea menor o igual a los elementos del otro sub-arreglo.

Conquistar: los dos arreglos son ordenados llamando recursivamente a quicksort. Combinar: Como cada arreglo ya está ordenado, no se requiere trabajo adicional.

3. 3. CARACTERISTICAS.

• Este método se basa en la táctica “divide y vencerás”: consiste en dividir un problema en subproblemas y luego juntar las respuestas de estos subproblemas para obtener la solución al problema central (subdividiendo el array en arrays mas pequeños y ordenar estos). • Es considerado entre los mas rápidos y eficientes de los métodos de ordenación interna. • El tiempo en marcha del algoritmo esencialmente depende de la opción del elemento del pivote. • Posible reducción de desempeño debido a uso de recursos. • Tiempo de ejecución depende de los datos de entrada

3.4. ALGORITMO.

1. Elegimos un elemento v (llamado pivote) del array de datos.2. Particionados el array de datos A en dos arrays:• A1 = Los elementos del array que se encuentran a la izquierda del pivote. -aquí se buscaran los numero mayores que el pivote. -una vez ubicado el mayor de la izquierda tan solo se guarda su posición para luego usarla. • A2 = Los elementos del array que se encuentran a la derecha del pivote. -aquí se buscaran los numero menores que el pivote. -una vez ubicado el menor de la derecha tan solo se guarda su posición para luego usarla. 3. Luego de tener las posiciones se procederá a intercambiar sus contenidos.4. Aplicamos la recursión sobre A1 y A25. Realizamos el último paso de "divide y vencerás" que es unir todas las soluciones Para que formen el array A ordenado.

3.5 DIAGRAMA DE FLUJO.

Page 6: INFORME Quicksort
Page 7: INFORME Quicksort

3.6 . PSEUDOCODIGO.

INICIO

Llenar (A);

Algoritmo quicksort (A, inf, sup)

i inf

j sup

x A [ (inf +sup) div 2]

mientras i = < j hacer

mientras A[ i ]< x hacer

i i +1

fin _ mientras

mientras A[ j ]> x hacer

j j -1

fin _ mientras

si i =<j entonces

tam A[ i ]

A[ i ] A[ j ]

A[ j ] tam

i = i + 1

j = j - 1

fin _ si

fin _ mientras

si inf < j

llamar _a quicksort (A, inf, j)

fin _ si

si i < sup

llamar _a quicksort (A, i, sup)

fin _ si

FIN

Page 8: INFORME Quicksort

3.7. FUNCION IMPLEMENTADA EN C++.

void quicksort (int A[100],int inf, int sup) { int i=inf,tam,k,j=sup; int x=A[(inf+sup)/2]; while(i<=j) { while(A[i]<x) i++; while(A[j]>x) j--; if(i<=j) { tam=A[i]; A[i]=A[j]; A[j]=tam; i++; j--; } } if (inf< j) quicksort(A,inf,j); if (i<sup) quicksort(A,i,sup); }

Page 9: INFORME Quicksort

3.8 EJEMPLO PRÁCTICO

0 1 2 3 4

A [8]=

i=0 j=4 x=A [2]=5

0 1 2 3 4

A [8]=

1<5 (V)…………… i=1

4<5 (V)…………… i=2

3>5 (F)…………… j=4

CAMBIO

0 1 2 3 4

A [8]=

i=3 j=3 x=A [2]=5

0 1 2 3 4

A [8]=

i=4 j=3 x=A [2]=5

55 334411 22

55 334411 22

33 554411 22

33 554411 22

Page 10: INFORME Quicksort

quicksort(A,0,4)

0 1 2 3

A [8] =

i=0 j=3 x=A [1]=4

0 1 2 3

A [8] =

i=0 j=3 x=A [1] = 4

0 1 2 3

A [8] =

FIN DEL ALGORITMO

0 1 2 3 4

A [8]=

341 2

3441 22

3221 44

33 552211 44

Page 11: INFORME Quicksort

3.9. COMPLEJIDAD

• Es el algoritmo de ordenación más rápido (en la práctica) conocido. Su tiempo de ejecución promedio es O(N log(N)).• Para el peor caso tiene un tiempo O (N2), pero si se codifica correctamente las situaciones en las que sucede el peor caso pueden hacerse altamente improbables.• En la práctica, el hecho de que sea más rápido que los demás algoritmos de ordenación con el mismo tiempo promedio O(N log(N)) está dado por un cicloInterno muy ajustado (pocas operaciones).

4. APLICACIONES

- Ordenacion en los exámenes de admisión deacuerdo a los puntajes obtenidos.}- Ordenar los puntajes para conocer en ranking en diversos juegos, concurso,etc- Manejar las producciones industriales deacuerdo en su porcentaje en ventas- Registros de almacenes

5. CONCLUSIONES:

Analizando quicksort en el mejor y peor caso se puede ver que es uno de los mejores métodos de ordenación, su implementación a pesar de no ser muy sencilla tampoco es complicada haciendo de este un algoritmo interesante y de elegante estructura y de mucha eficiencia.

Este algoritmo de ordenación es un ejemplo claro de que el método divide y vencerás es efectivo cuando tienes cantidades grandes de datos por trabajar y necesitas ahorrar tiempo y recursos.

6. RECOMENDACIONES:

- El método de ordenación en un caso ordinario es eficiente para grandes cantidades de datos, porque si se quiere procesar cantidades pequeñas los algoritmos de burbuja y inserción son más eficientes.- Si se usa el método de ordenación quicksort es mejor implementar su código seleccionado como pivote el término medio del vector porque es más fácil de implementar y su código es más sencillo.

Page 12: INFORME Quicksort

7 .REFERENCIAS:

BIBLIOGRAFÍA:

O. Cairó, S. Guardati, Estructuras de Datos, 2a. Ed., McGraw Hill, 2002. Cesar liza avila , Estructura de Datos con c++ 2ª Ed, Creadores.2005

Luis Joyanes Aguilar, Fundamentos de programación,3ra Ed, Concepcion Fernandez,2003.

Marck Allen Weiss, Estructuras de Datos y Algortimos,1ra Ed, Addison Wesly Iberoamericana,1995

WEBGRAFIA

Anónimo, Quicksort,[Internet ],2011, wikipedia, Disponible en: http://es.wikipedia.org/wiki/Quicksort

José Rafael Zavala Meneses, quicksort, [Internet], 2009, organización desconocida, Disponible en: http://mailweb.udlap.mx/~sainzmar/is211/algoritQuik.html

Autor desconocido, Quicksort,[Internet ],2009, slideshare, Disponible en:http://www.slideshare.net/juliangg30/quick-sort