jueves, 9 de septiembre de 2010

Presentación #2





Definición:
El ordenamiento rápido (Quicksort en inglés) es un algoritmo basado en la técnica de divide y vencerás, no solo nos sirve para organizar una lista de datos desorganizados, si no también, para optimizar el tiempo que se ocupa en realizar esta labor, ya que permite ordenar "n" elementos en un tiempo proporcional de O(n log n), lo cual es muy eficiente.

Funcionamiento:
Primero tenemos que elegir un elemento al azar al que llamaremos pivote.
Después de elegir el pivote analizaremos y empezaremos acomodarlos de tal manera que los elementos menores al pivote van del lado izquierdo y los mayores del derecho :

elemento < pivote ="">
elemento > pivote = Derecha
De esta forma obtendremos la posición del pivote elegido y a partir de ahí ordenaremos los demás elementos que del pivote se dividen en 2 sublistas las cual de igual manera elegimos un pivote y lo ordenamos como la primera ves y así sucesivamente se irán dividiendo en 2 sublistas pero cada ves menores lo haremos siempre que tenga mas de un elemento y después ya nos queda ordenada.






Mejor y Peor Caso:
En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño. En este caso, el orden de complejidad del algoritmo es O(n·log n).
En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del arreglo, y el arreglo que le pasamos está ordenado, siempre va a generar a su izquierda un arreglo vacío, lo que es ineficiente.
Pseudocódigo:

funcion quicksort(arreglo)

variables lista, menor, mayor, elemento

if longitud(arreglo) ≤ 1

return arreglo

else

//seleccionar un valor pivote en el arreglo

for each elemento en arreglo

if elemento < pivote entonces añadir “elemento” a menor

else añadir “elemento” a mayor

return concadenar_lista(quicksort(menor), pivot, quicksort(mayor))






7 comentarios:

  1. Hola
    me gusto tu reporte y la manera en que lo explicas y la manera en que separas la definicion ya que para mi si es entendible y luego anotas su funcionamiento y la manera en que se organizaran los "PIVOTES"
    sigue asii :)

    ResponderEliminar
  2. Hola!

    Tu clase me parecio muy entendible fue una de las que mejor entendi. me agrado que sus ejemplos estuvieran sencillos aparte el video fue un gran apoyo.

    (:

    ResponderEliminar
  3. Hola!
    La clase que dieron tu y tu compañero fue muy entendible por los ejemplos que utilizaron y el video de las comparaciones sobre cual era mas rapido (: estuvo muy bien estructurado el tema.

    ResponderEliminar
  4. :)

    hola!

    tu clase te quedo muy bien el tema fue muy facil de entender gracias a los ejemplos que pusieron,
    tiene muy buena informacion tambien fue su presentacion fue muy buena se nota que tenian buen entendimiento del tema y se noto
    yo lo entendi muy bien este tema y para toda la clase tambien por lo que cumplieron con su objetivoo

    buena clase:)

    nos vemos!!

    ResponderEliminar
  5. Excelente. Me gustaría que subieran su presentación.

    Calificación: 5/5

    ResponderEliminar
  6. Muy bien su presentacion, me gusto mucho el video que pusieron.

    ResponderEliminar
  7. Muy buena presentación, los ejemplos que dieron hicieron que se entendiera además agregaron un video.

    Saludos

    ResponderEliminar