Que tul? Voy a empezar una mini-serie de post de Algoritmos de ordenamiento. La razon? Porque son una pieza fundamental en la enseñanza de como pensar algoritmos. La premisa casi siempre es la misma ---> ordenar un arreglo. En vez de tirar el codigo de una, la idea es razonar un poco la tecnica. Seleccion Analizando como resolver un ordenamiento de arreglo o lista de menor a mayor una de las primeras formas surge de poder determinar cual es el elemento con menor valor. Si yo tengo ese elemento me ASEGURO de que no hay uno que sea menor que ese, si a este elemento lo ubico en una zona "YA ORDENADA" ya tengo una aproximacion a resolver el problema. El acto de buscar ese elemento se denomina algoritmo de seleccion. Aplicando muchas veces este algoritmo puedo conseguir ordenar toda la estructura. Por ejemplo, la siguiente lista 2 8 3 9 1 Buscamos el menor elemento: 1. Lo ubicamos en otra lista "Ya ordenada": Ahora proseguimos a buscar el siguiente menor: 2. Lo ubicamos en la lista ordenada: Y asi... Problema Ahora la situacion es que no se puede usar esa lista "YA ORDENADA". Hay que trabajar sobre la estructura original. Sin embargo, con un trabajo extra sobre el arreglo original se puede usar ese mismo como ya ordenado. Analizando devuelta el original, obtenemos el menor elemento: Ahora tenemos como minimo dos caminos: 1)Lo podemos mandar al principio del arreglo y correr todos los elementos un lugar para que se mantengan los mismos elementos. 2) Podemos intercambiar el menor elemento con el primer elemento de lo "NO ORDENADO" Vamos a optar la opcion 2: Ahora tenemos lo siguiente: Tenemos que elegir el menor elemento devuelta: el 2. Y lo tenemos que intercambiar con el 8, ya que el 8 es el primer elemento de la parte "NO ORDENADA" Finalmente, tras repetir los pasos: 1)Buscar menor 2)Cambiar con el primero de la lista no ordenada 3)Volver a 1 Se llega a: Codigo Buscar elemento: Se puede resolver recorriendo la estructura "NO ORDENADA" e ir guardando un elemento candidato con el menor valor y su posicion. Intercambiar los elementos: Se puede resolver accediendo a los elementos del arreglo y pisando sus valores. Se necesitan los indices del primer elemento de la lista "NO ORDENADA" y del elemento con menor valor (lo mencionado en el parrafo anterior). Para las secciones de codigo no se considero necesario modularizar. Por ejemplo, crear funciones swap o buscarMayor(), es al pedo ya que no hace al algoritmo pero es una mejora. C++ Python ADA (Insufrible, para futuros post ni en pedo toco esto devuelta) Bueno, con esto finalizo el post. Son codigos propios asi que puede que tengan algun que otro error:
Algoritmos de ordenamiento: seleccion
Datos archivados del Taringa! original
451puntos
1,395visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:
Posts Relacionados
Louis PasteurSocia886
0
archivado0
archivado0
archivadomentes brillantes sindrome del sabioariel_ard
0
archivadoDejá tu comentario
No hay comentarios nuevos todavía