Ir al contenido principal

Ordenamiento por Selección

El ordenamiento por selección es uno de los algoritmos populares que se enseñan cuando se inicia en el mundo de la programación. Su efectividad varía dependiendo el número de elementos que vayamos a ordenar y la cuestión la explico a continuación:

El ordenamiento por selección inicia comparando al primer elemento con el resto en búsqueda del más pequeño, cuando lo halla realiza un intercambio de posición.
Después pasa al siguiente elemento y realiza la comparación con los elementos siguientes. Es decir, va a comparar todos los elementos de la lista o arreglo con sus elementos siguientes y entre cada ciclo pudiendo realizar varios intercambios de posición.

Dejando de lado su cuestionable eficacia, les dejo el código:


Analicémoslo un momento.

Escribí un método antes del main (void ordenar) que es escencialmente el ordenamiento por selección. Tenemos dos ciclos for anidados, uno para la referencia del elemento que comparamos y el segundo para recorrer la lista. Dentro tenemos una condición if, si un elemento de la lista es menor a nuestra referencia entonces van a pasar 3 cosas:

1. El elemento que hallamos que es menor lo colocamos en una variable auxiliar.
2. El elemento de referencia lo colocamos en donde estaba el elemento menor
3. Ahora colocamos como referencia al elemento menor que guardamos en la variable auxiliar.

Cabe mencionar que el primer for tiene el tamaño de la lista -1 ¿porqué? porque llegada la última iteración es inútil que se compare el último elemento con si mismo, además de que llegados a ese punto el resto de la lista ya supone estar ordenada.

Siéntanse libres de experimentar y analizar el código tanto como gusten.

Comentarios

Entradas populares de este blog

Programación: Estructuras de Control I

Hoy vamos a platicar un poco sobre las estructuras de control. Antes que nada ¿Qué son? Son sentencias que permiten modificar el flujo del programa, algo así como tomar decisiones basados en datos del programa. Para ello deben cumplirse ciertas condiciones definidas por el usuario. Estructura de control IF Pensemos en un programa que evalúe nuestro desempeño escolar. Declaramos nuestras variables y obtenemos el promedio, hasta aquí ya sabemos cómo hacer todo. Ahora bien, queremos que el programa nos muestre un mensaje "Excelente" si el promedio es de 10 a 8.5, "Bueno" si el promedio es de 8.4 a 7.5, "Regular" si el promedio es de 7.4 a 6, si es inferior a 6 que muestre "Malo". Analizando el problema nos damos cuenta rápidamente de dos detalles (esto se va dando con la práctica): 1. Utilizaremos variables de tipo flotante. 2. Utilizaremos 4 condiciones. La forma en que utilizamos la estructura If es la siguiente: if ( condición ) { .....

Método de solución de ecuaciones por suma y resta

Esta vez voy a explicarles el método de suma y resta para la resolución de sistemas de ecuaciones. Me parece un método bastante sencillo y eficiente (claro esto depende del tipo de ecuación), sin más les dejo la explicación, cualquier duda o comentario dejenla en los comentarios y procuraré resolverla:

Programación: Obtener Promedio

Que tal gente, volvemos a los temas de programación. Hoy veremos un tema que teníamos pendiente, aquel programa que obtuviera el promedio de 4 calificaciones y nos dijera nuestro desempeño segun nuestro promedio. Para los que no sepan muy bien de lo que hablamos dejo el link de aquella entrada AQUI . Ahora bien, en esa ocasión hicimos el programa muy básico y quizás poco ortodoxo. El reto era mejorar ese programa con lo visto en los tutoriales que siguieron. Pues bien, ahora incorporamos arreglos, ciclos FOR, y seguimos utilizando los condicionales. Aunque viene cierto que el programa sigue sin tener gran nivel de complejidad sirve de buen ensayo para desarrollar y practicar los conocimientos así que vamos al código: Bueno, ahí está. Ahora hay que notar diferentes cosas: 1) En el segundo ciclo FOR, donde definimos a sum, notamos el operador +=. Lo que estamos haciendo es indicar la instrucción "en la primer vuelta del ciclo sum es igual a materia[j], en la segunda vuelta el...