Your SlideShare is downloading. ×
14 Ordenacion
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

14 Ordenacion

2,875
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,875
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
97
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Algoritmos de ordenación Apoyo SSD5
  • 2. Objetivo
    • En esta parte del curso se introducen algunos de los algoritmos de ordenación
  • 3. Ordenación
    • El comportamiento de algunos algoritmos difiere cuando se les presentan datos que están casi ordenados, a cuando se les presentan datos que están completamente desordenados.
  • 4. Ordenación
    • Son estas diferencias entre el conjunto de estas propiedades las que hacen a cada algoritmo de ordenación único.
    • Estas características también hacen un algoritmo más o menos aplicable en ciertas situaciones.
  • 5. Ordenación por Selección
  • 6. Ordenación por selección
    • Ordenación por selección ( selection sort ) es un algoritmo de ordenación básica que trabaja haciendo iteraciones, o pasos (movimientos) , entre los datos que están siendo ordenados.
  • 7. Ordenación por selección
    • Cada paso resulta en la colocación de un elemento en el lugar correcto.
    • Como resultado, cada paso subsiguiente tiene que inspeccionar un elemento menos que el paso anterior
  • 8. Ordenación por selección
    • La ordenación por selección tendrá el número de pasos igual al número de elementos a ordenar menos uno
    • Cada paso coloca un elemento en la posición que dejará un arreglo ordenado
  • 9.  
  • 10. Ordenación por selección
    • El algoritmo de ordenación por selección siempre hace un paso menos, que el número de elementos en el arreglo.
    • Esto sucede aún si el arreglo original ya se encuentra ordenado.
  • 11. Ordenación por selección
    • El algoritmo no tiene un mecanismo para detectar cuando el arreglo está ordenado, por lo que debe realizar todos los pasos requeridos
  • 12. Ordenación Rápida (Quicksort)
  • 13. Ordenación rápida
    • Ordenación rápida o "quicksort " es un algoritmo de ordenación rápida que usa un enfoque divide-y-vencerás para la solución de problemas.
    • A diferencia de los algoritmos de ordenación básica que ya hemos revisado, la ordenación rápida usa recursión.
  • 14. Ordenación rápida
    • Dado un arreglo de elementos a ordenar, el algoritmo divide recursivamente el arreglo en arreglos más y más pequeños.
    • Luego el algoritmo ordenación rápida ordena estos arreglos pequeños y combina los resultados para crear una versión ordenada del arreglo original.
  • 15. Ordenación rápida
    • Debido a su naturaleza recursiva, la implantación del algoritmo ordenación rápida puede ser difícil de entender.
    • Antes de examinar una implantación, consideramos la idea detrás del algoritmo.
  • 16. Ordenación rápida
    • El algoritmo ordenación rápida puede ser resumido en cuatro pasos básicos.
    • Presentados en el contexto de ordenar un arreglo, los pasos son los siguientes.
      • Si el tamaño del arreglo es cero o uno, entonces regresa el arreglo.
        • Este es el caso base.
  • 17. Pasos ordenación rápida
      • Selecciona un elemento del arreglo para ser usado como el elemento pivote .
        • Este es el paso de selección del pivote.
      • Crea dos nuevos arreglos. Coloca todos los elementos del arreglo original que son menores que el elemento pivote en uno de estos sub arreglos y todos los elementos que son más grandes que el elemento pivote en el otro sub arreglo.
        • Este es el paso de la partición.
  • 18. Pasos ordenación rápida
      • Regresa el arreglo que contiene el resultado del sub arreglo ordenado rápidamente que incluye los elementos menores que el pivote , seguidos por el pivote , y luego por el resultado del sub arreglo ordenado rápidamente que incluye los elementos mayores que el pivote .
        • Este es el paso de división recursiva.
  • 19.  
  • 20.  
  • 21.  
  • 22.
    • La naturaleza recursiva de ordenación rápida rompe el arreglo original en sub arreglos cada vez más pequeños.
    • El definir un pivote y particionar estos sub arreglos eventualmente resulta en el ordenamiento del arreglo completo.
  • 23. ¿Cómo Usar las Funciones de Ordenación de STL?
    • STL incluye funciones que los programadores pueden usar para ordenar una variedad de contenedores.
    • Una de estas funciones es la función sort .
    • La función sort desarrolla una ordenado rápido (por lo general una o rdenación rápida o quicksort ) sobre un contenedor.
  • 24.
    • #include <iostream>
    • #include <cstdlib>
    • #include <ctime>
    • #include <vector>
    • #include <algorithm>
    • using namespace std;
    • int random_less_than_50(void) {
    • return (rand() % 50);
    • }
  • 25.
    • int main(int argc, char* argv[]) {
    • // seed the random number generator
    • srand( time(0) );
    • // create a vector with ten random elements (all less than 50)
    • vector<int> v;
    • back_insert_iterator< vector<int> > back_itr(v);
    • generate_n(back_itr, 10, random_less_than_50);
    • // display its contents
    • ostream_iterator<int> out(cout, &quot; &quot;);
    • copy(v.begin(), v.end(), out);
    • // sort the vector
    • sort(v.begin(), v.end());
    • // display its contents, sorted
    • cout << endl;
    • copy(v.begin(), v.end(), out);
    • return EXIT_SUCCESS;
    • }
  • 26. STL - función sort
    • La función sort puede operar sólo sobre contenedores que provean iteradores de acceso aleatorio.
    • Los contenedores vector , deque , y string proveen iteradores de acceso aleatorio.
  • 27. STL - función sort
    • Debido a que el contenedor list de STL no brinda iteradores de acceso aleatorio, la función de propósito general sort sobre un objeto list da como resultado un error de tiempo de compilación.
  • 28. Función sort en contenedor list
    • Como las listas enlazadas por lo general requieren ser ordenadas, el contenedor list tiene una función miembro especial sort