Ordenamiento por selección | Selection Sort
Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/3-selection_sort
¿Cómo funciona?
Se trata de un algoritmo de ordenamiento del tipo O(n²)solo que en este caso no desplazaremos cada elemento una posición a la vez, como en el Ordenamiento por inserción, en su lugar nos enfocaremos en buscar el número menor del resto de la lista y una vez lo encontremos, lo intercambiaremos por el valor de la posición que estamos procesando.
Ejemplo:
Trataremos de ordenar la siguiente lista de enteros:
![\[\]int{5,2,4,1,3}](/uploads/HhsDEE97M3YgShTdGoJebw.png)
Pasos 1 →4
- Tomamos el primer elemento de la lista y recorremos el resto de elementos hasta encontrar el número con el menor valor.
- Intercambiamos este con el primer elemento de la lista, pues se tratará del elemento más pequeño de toda la lista.
![\[\]int{5,2,4,1,3} →\[\]int{1,2,4,5,3}](/uploads/wPr9Ma4AHsv_TAy0Az9g_g.png)
Pasos 5 →7
- Enseguida tomamos el segundo elemento de la lista y recorremos el resto de los elementos en busca de un elemento menor a este
![\[\]int{1,2,4,5,3}](/uploads/Q2IBjx4wE2_BhWPx-flutA.png)
En este cano, no será necesario realizar ningún intercambio pues el elemento ya se encuentra en su ubicación final.
Pasos 8→9
- Tomamos el tercer elemento de la lista y buscamos el siguiente elemento más pequeño para intercambiarlo con este.
![\[\]int{1,2,4,5,3} → \[\]int{1,2,3,5,4}](/uploads/8zLoQRiRTYjnhKS0f3WmXQ.png)
Paso 10
- finalmente evaluamos si el último elemento debe ser intercambiado.
![\[\]int{1,2,3,5,4} → \[\]int{1,2,3,4,5}](/uploads/5ut5k4Ebm5kgCt58JeYNUA.png)
Resultado final
![\[\]int{1,2,3,4,5}](/uploads/vsEAg81Nr6cu-s9gY33T2g.png)
Implementación en Go
https://play.golang.org/p/S3topeqWdxS
