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

INTEGRANTES:

• Rodrigez Urquiaga, Roberto

• Saldaña Altamirano, Keven

• Marquez Zavaleta, Samuel

• Moreno Chavez Daniel

• Mantilla Santa Cruz Luis


CUADROS DE EVALUACION:
CONOCIMIEN DESENVOLVIMIE MATERI COMPORTAMIE
INTEGRANTES/ITE TO NTO AL NTO TOTA
MS L
(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

PUNTAJ
ITEMS P.M.
E
CARATULA 1
RESUMEN 4
INTRODUCCION 2
CONTENIDO 7
CONCLUSIONES 3
RECOMENDACIONE
2
S
REFERENCIAS 1

TOTAL 20
1. RESUMEN:

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 2

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.

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 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 A2
5. 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.
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
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); }

3.8 EJEMPLO PRÁCTICO


0 1 2 3 4

A [8]=1 4 5 2 3

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

0 1 2 3 4

A [8]=1 4 5 2 3
1<5 (V)…………… i=1

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

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

CAMBIO

0 1 2 3 4

A [8]=1 4 3 2 5

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

0 1 2 3 4

A [8]=1 4 3 2 5

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


quicksort(A,0,4)

0 1 2 3

A [8] =1 4 3 2

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

0 1 2 3

A [8] =1 4 3 2

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

0 1 2 3

A [8] =1 2 3 4

FIN DEL ALGORITMO

0 1 2 3 4

A [8]=1 2 3 4 5

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 ciclo
Interno 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.

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

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