• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ordenar
 

Ordenar

on

  • 161 views

Presentación de varios algoritmos para ordenar una lista en Python

Presentación de varios algoritmos para ordenar una lista en Python

Statistics

Views

Total Views
161
Views on SlideShare
161
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ordenar Ordenar Presentation Transcript

    • Sorting ALGORITHMS AND DATA STRUCTURES USING PYTHON INF-201 Oliver Martinez N.E. 200.90.5607
    • Sorting Python Sorting u ordenar en español, es el proceso por el cual un colección o listado es ordenado de alguna forma. Por ejemplo, el listado de estudiantes ordenado por apellido paterno en forma ascendente o descendente. Apellido Paterno Alvarez Apellido Materno Contreras Nombre(s) Carmina Angeles Guadarrama Zapatero Santiago Reyes Jimenez Omar Juan Yanet
    • Sorting Python En programación es necesario comparar dos valores y verificar cual es el menor y cual es el mayor y si estos valores no están en posición correcta habrá que ponerlos en posición correcta. En Python veremos algunos algoritmos para poder resolver este problema.
    • Sorting Python The Bubble Sort Este algoritmo hará varias pasadas por el listado verificando uno cual es el mayor y lo mueve al espacio hacia adelante si es necesario. Después verifica el próximo valor y hará lo mismo, si es mayor cambiará de posición con el valor menor. Esto lo podemos ver en el siguiente ejemplo.
    • Sorting Python The Bubble Sort Al terminar la primera pasada en el listado el valor mayor quedará en la posición última de la lista. Volverá a empezar desde el principio haciendo el mismo proceso y pondrá el segundo número mayor en el penúltimo lugar de la lista.
    • Sorting Python The Short Bubble Sort Short Bubble Sort hace una pequeña mejora al Bubble Sort. Realiza el mismo proceso de leer n veces el listado ordenando de menor a mayor solo que añade la opción de que si la lista ya está originalmente ordenada hará solo una lectura completa del listado y si la encuentra ordenada no realiza ninguna modificación y sale del proceso.
    • Sorting Python The Selection Sort Este algoritmo realiza un proceso similiar al de Bubble Sort con la diferencia que, al encontrar un número mayor en la comparación de a con b, no hace el cambio de menor por mayor al momento sino que lo mantiene en memoria y sigue comparando, si no encuentra otro mayor realiza el cambio en la última posición. Aquí un ejemplo.
    • Sorting Python The Selection Sort Con este método el número de intercambios se reduce en más del 50% En comparación con el de Bubble Sort.
    • Sorting Python The Insertion Sort The Insertion Sort trabaja de una manera similar al Selection Sort solo Que ahora en lugar de llevar el mayor número al final lo posiciona inmediatamente en la siguiente posición y sigue comparando en la lista. Todos los números menores al mayor encontrado es insertado en las posiciones de atrás y el mayor siempre va quedando en el frente del Bloque. Veamos el ejemplo.
    • Sorting Python Al crear una sublista con números ya ordenados y siguiendo avanzando comparando los valores que hay hacia adelante, va insertando los menores hacía atrás. The Insertion Sort
    • Sorting Python The Shell Sort Algoritmo también conocido como “ordenamiento disminuyendo e incrementando”. Utiliza el método de Insertion Sort pero dividiendo el listado en pequeños sublistados y en esos sublistados aplica el Insertion Sort. Veamos la siguiente imagen. El primer sublistado tendrá el 54, 17, 44 el cual, por el algoritmo de Insertion Sort, ordenará quedando así 17,44,54.
    • Sorting Python The Shell Sort Así mismo hará con los otros sublistados quedando como se ve en la siguiente imagen.
    • Sorting Python The Shell Sort Como vemos el resultado de el orden de las tres sublistas todavía no está ordenado. Se aplica nuevamente el Insertion Sort para hacer cambio de los números que nos queda por ordenar.
    • Sorting Python The Merge Sort The Merge Sort es una función recursiva que dividirá constantemente el listado a la mitad, lo ordenará y finalmente haré el “merge” la unión de las partes divididas en una sola. Primeramente dividirá la lista en dos y lo continuará haciendo hasta que cada valor quede individual.
    • Sorting Python The Merge Sort Los valores individuales será comparados uno a otro y puestos en orden correcto, menor primero mayor después, y volverá a unirlos nuevamente hasta crear el listado ordenado completo.
    • Sorting Python The Quick Sort The Quick Sort utiliza las ventajas del Merge Sort pero si almacenar los valores en listados o sublistados adicionales. Primeramente utiliza un “pivot value” o un valor eje que puede ser el primer valor de la lista y apartir de la siguiente posición comenzará a dividir la lista comparándolo con el pivot value.
    • Sorting Python The Quick Sort Para esto se necesitarán dos posiciones a las que llamaremos marca izquierda y marca derecha (leftmark, rightmark) donde el leftmark será la posición inmediata del valor pivot y el rightmark será la posición final de la lista. Ambas marcas convergerán en un punto intermedio. Lo importante aquí es que si el valor pivot, el valor eje es mayor que el valor de leftmark simplemente se moverá un posición, si el valor pivot no es mayor hará un pare, un stop y verificará si el valor rightmark es menor que el valor pivot y si lo es cambiará el valor del leftmark por el de rightmark y viceversa. Lo podemos ver en la siguiente imagen.
    • Sorting Python The Quick Sort
    • Sorting Python The Quick Sort Finalmente cuando el rightmark llega a ser menor que el leftmark hace un stop. La posición del rightmark llega a ser el punto de división y donde entrará nuestro valor pivot. Apartir de ahí se dividirá el listado entre dos y se ordenarán para después unirse nuevamente.
    • Sorting Python Veamos estos algoritmos en acción. Pondremos el mismo ejemplo para todos los algoritmos, crearemos un listado con 1,000 números (del 1 al 1,000) en forma desordenada y veremos que método es el más eficiente para ordenarlos. Primero se presenta cuanto tiempo tarda en generar el listado y después cuanto tiempo pasa en ordenarlos.
    • Sorting Python The Quick Sort
    • Sorting Python The Merge Sort
    • Sorting Python The Shell Sort
    • Sorting Python The Insertion Sort
    • Sorting Python The Selection Sort
    • Sorting Python The Shor Bubble Sort
    • Sorting Python The Bubble Sort
    • Sorting Python Se realiza el test con un listado de 100,000 números (1 al 100,000) Desordenados y ver los resultados de todos los algoritmos.