miércoles, 8 de septiembre de 2010

Presentacion 2

QUICK SORT

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))




9 comentarios:

  1. Que ondaa Joel!!!
    Estuvo excelente tu clase y la de tu compañero muy bien la forma de explicar este algoritmo aparte que es uno de los mas rápidos en ordenamiento, me sera muy útil su información.

    También los ejemplos que pusieron tanto los de paso a paso y el vídeo son muy entendibles y facilitan mucho su comprensión.

    Excelente Clase!!!

    ResponderEliminar
  2. La presentacion que realizaste junto con tu compañero fue la que mas me agrado, dominaban el tema muy bien y se apoyaron de buenos ejemplos ademas de el video. (:

    ResponderEliminar
  3. Hola
    me gusto mucho tu clase ya que fue una buena idea poner un video lo cual llamo la atención de todos los del salón, además de que facilitaron el entendimiento ya que pusieron el ejemplo paso por paso y eso fue excelente.

    ResponderEliminar
  4. me gusto mucho tu clase porque le entendi muy bien, gracias a los ejemplos, estaban muy bien elejidos.A la otra ponle mas color para que se vea mas bonito, pero todo estuvo muy bien y mas la explicacion.

    ResponderEliminar
  5. yo no asisti el dia que dieron la clasepero veo que mis compañeros agregan que estubo muy niien explicada ; de este tma quik sort ya tenia algun conociemiento ya que el semestre pasado toque el tema me llamo la atencion ver tu informacion y esta muy :)

    ResponderEliminar
  6. Muy bien la info. La vez que la diste en clase me gustó mucho lo de los circulos con números, que se iban moviendo para el ordenamiento, asi lo entendí mejor.

    ResponderEliminar
  7. Entendi muy bien su clase aparte con las animaciones se me izo mas facil comprenderlo.

    ResponderEliminar
  8. muy bien la informacion esta muy completa mas la explicacion en clase que me parecio una de las mejores

    ResponderEliminar
  9. Su presnetacion fue una de las que mejor le entendi, sus ejemplos fueron muy sencillos de comprender

    ResponderEliminar