SlideShare una empresa de Scribd logo
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.

Más contenido relacionado

Similar a Ordenar

Presentacion programacion dinamica luis silva
Presentacion programacion dinamica luis silva Presentacion programacion dinamica luis silva
Presentacion programacion dinamica luis silva
LuisFeSilva
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
Orlando Torres
 
Presentacion recursividad
Presentacion recursividadPresentacion recursividad
Presentacion recursividad
jambslide
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
mishuhot
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
sirekarol
 
Arrays metodos deordenamiento01
Arrays metodos deordenamiento01Arrays metodos deordenamiento01
Arrays metodos deordenamiento01
Alma Lopez
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directa
tavo_3315_
 
Algebra junior rico2
Algebra junior rico2Algebra junior rico2
Algebra junior rico2
JuniorRico1
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
Daniel Guaycha
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
Ascencion Esquivel
 
Expo insercion y seleccion
Expo insercion y seleccionExpo insercion y seleccion
Expo insercion y seleccion
adrianacastro01
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicas
PatriciaU
 
Algoritmos sobre arrays
Algoritmos sobre arraysAlgoritmos sobre arrays
Algoritmos sobre arrays
Jefferson Sarmiento
 
Algoritmos ordenación.pptx
Algoritmos ordenación.pptxAlgoritmos ordenación.pptx
Algoritmos ordenación.pptx
FranSilvo
 
Ensayo pilas-estructura-dtos
Ensayo pilas-estructura-dtosEnsayo pilas-estructura-dtos
Ensayo pilas-estructura-dtos
Cris Arevalo
 
ALGORITMO DE BUSQUEDA.pptx
ALGORITMO DE BUSQUEDA.pptxALGORITMO DE BUSQUEDA.pptx
ALGORITMO DE BUSQUEDA.pptx
EverMuchairo1
 
Algoritmo de busqueda truncamiento
Algoritmo de busqueda truncamientoAlgoritmo de busqueda truncamiento
Algoritmo de busqueda truncamiento
javiervilugron
 
array
arrayarray
array
mario
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
Daniel Guaycha
 
Quick Sort
Quick SortQuick Sort
Quick Sort
jo0eel
 

Similar a Ordenar (20)

Presentacion programacion dinamica luis silva
Presentacion programacion dinamica luis silva Presentacion programacion dinamica luis silva
Presentacion programacion dinamica luis silva
 
Algoritmos de ordenamiento
Algoritmos de ordenamientoAlgoritmos de ordenamiento
Algoritmos de ordenamiento
 
Presentacion recursividad
Presentacion recursividadPresentacion recursividad
Presentacion recursividad
 
Metodos de odenamiento de vctores
Metodos de odenamiento de vctoresMetodos de odenamiento de vctores
Metodos de odenamiento de vctores
 
Ordenamientos de vectores
Ordenamientos de vectoresOrdenamientos de vectores
Ordenamientos de vectores
 
Arrays metodos deordenamiento01
Arrays metodos deordenamiento01Arrays metodos deordenamiento01
Arrays metodos deordenamiento01
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directa
 
Algebra junior rico2
Algebra junior rico2Algebra junior rico2
Algebra junior rico2
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
 
Expo insercion y seleccion
Expo insercion y seleccionExpo insercion y seleccion
Expo insercion y seleccion
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicas
 
Algoritmos sobre arrays
Algoritmos sobre arraysAlgoritmos sobre arrays
Algoritmos sobre arrays
 
Algoritmos ordenación.pptx
Algoritmos ordenación.pptxAlgoritmos ordenación.pptx
Algoritmos ordenación.pptx
 
Ensayo pilas-estructura-dtos
Ensayo pilas-estructura-dtosEnsayo pilas-estructura-dtos
Ensayo pilas-estructura-dtos
 
ALGORITMO DE BUSQUEDA.pptx
ALGORITMO DE BUSQUEDA.pptxALGORITMO DE BUSQUEDA.pptx
ALGORITMO DE BUSQUEDA.pptx
 
Algoritmo de busqueda truncamiento
Algoritmo de busqueda truncamientoAlgoritmo de busqueda truncamiento
Algoritmo de busqueda truncamiento
 
array
arrayarray
array
 
Algoritmos Ordenamiento
Algoritmos OrdenamientoAlgoritmos Ordenamiento
Algoritmos Ordenamiento
 
Quick Sort
Quick SortQuick Sort
Quick Sort
 

Más de olivermartz

Graphs
GraphsGraphs
Graphs
olivermartz
 
Hashing
HashingHashing
Hashing
olivermartz
 
Trees
TreesTrees
Cola
ColaCola
Números factoriales
Números factorialesNúmeros factoriales
Números factoriales
olivermartz
 
RSA
RSARSA
Tower of hanoi
Tower of hanoiTower of hanoi
Tower of hanoi
olivermartz
 

Más de olivermartz (7)

Graphs
GraphsGraphs
Graphs
 
Hashing
HashingHashing
Hashing
 
Trees
TreesTrees
Trees
 
Cola
ColaCola
Cola
 
Números factoriales
Números factorialesNúmeros factoriales
Números factoriales
 
RSA
RSARSA
RSA
 
Tower of hanoi
Tower of hanoiTower of hanoi
Tower of hanoi
 

Último

TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
Uso de las Tics en la vida cotidiana.pptx
Uso de las Tics en la vida cotidiana.pptxUso de las Tics en la vida cotidiana.pptx
Uso de las Tics en la vida cotidiana.pptx
231485414
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMAUML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
martinezluis17
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajasSlideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
AdrianaRengifo14
 
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdktrabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
KukiiSanchez
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 

Último (20)

TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
Uso de las Tics en la vida cotidiana.pptx
Uso de las Tics en la vida cotidiana.pptxUso de las Tics en la vida cotidiana.pptx
Uso de las Tics en la vida cotidiana.pptx
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMAUML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajasSlideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
 
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdktrabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 

Ordenar

  • 1. Sorting ALGORITHMS AND DATA STRUCTURES USING PYTHON INF-201 Oliver Martinez N.E. 200.90.5607
  • 2. 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
  • 3. 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.
  • 4. 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.
  • 5. 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.
  • 6. 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.
  • 7. 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.
  • 8. 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.
  • 9. 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.
  • 10. 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
  • 11. 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.
  • 12. Sorting Python The Shell Sort Así mismo hará con los otros sublistados quedando como se ve en la siguiente imagen.
  • 13. 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.
  • 14. 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.
  • 15. 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.
  • 16. 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.
  • 17. 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.
  • 19. 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.
  • 20. 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.
  • 28. 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.