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

Listas en java

Si hablamos de la implementación de listas en java, podemos referirnos a diferentes instancias como un Arraylist, linkedList, Vector o Stack. Cada uno de estos con sus propiedades puede resultar más útil para cada caso. Enfoquémonos en el primero: ArrayList Crea una lista vacía con una capacidad inicial de 10 (va creciendo conforme se almacenan elementos). Recordando cómo funcionan los arreglos estáticos (int array [n]) podemos eliminar el valor de una posición, pero no podemos eliminar la posición en si. Es decir, si tenemos un arreglo de tamaño 10 y solo ocupamos 4 espacios, los otros 6, aunque vacios, siguen ahí. y si queremos eliminar una posición y recorrer los datos, ahí se presenta un problema. Pues bien, ArrayList es una lista implementada con arreglos dinámicos, así que cuando eliminamos un elemento (que no sea el último) lo que en realidad se hace es tomar la posición del elemento a eliminar y recorrer los elementos posteriores a este. Y si rebasamos la capacidad actu...

Programación: Variables

A veces necesitamos almacenar datos para que el programa pueda leer la información y utilizarla, cuando asignamos a ese dato una palabra clave, esa palabra clave se llama variable. Antes que otra cosa ¿Qué es una variable? En programación es un espacio reservado en memoria para un dato que puede ser fijo o puede ser establecido por el usuario. Antes de ver los casos y la forma de declararlas vamos a echar un ojo a los tipos de variable. Los tipos de variable hacen referencia a diferentes tipos de dato: Nombre Tipo Declaración Interger Entero Int Float Flotante (o punto decimal) Float Char/String Para caracter o cadena Char/Char[] Boolean Lógico (True/False) Bool Por ejemplo si quiero declarar una variable con el valor de pi necesito una variable de tipo flotante y se declara así: float pi = 3.141592; Si quisiera declarar un número fijo de 10 personas: int x = 10; Si quisiera declarar una letra "C" simplemente: char c = "C";...

Regresamos... ahora en Java.

Después de una breve larga ausencia estamos de regreso, nos quedamos con muchos temas e ideas por discutir a las que no quiero abandonar. Sin embargo y siendo sincero se manejarme un poco mejor en java de lo que lo hago en C++, así que daré este nuevo enfoque. De nuevo a todos, no se asusten es algo muy sencillo y se avanza a buen paso. Empezamos: Notas: Línea 1: package hace referencia al archivo donde tenemos nuestro código. Es decir, si el paquete se llama "holamundo", quiere decir que nuestro archivo se llama "holamundo.java". Línea 3: class se refiere a una estructura de la programación orientada a objetos. Dentro de las clases podemos alojar variables, métodos y otras estructuras. estos métodos y variables los podemos llamar después creando un objeto de ese tipo y asignándole valores. Línea 4: aquí vemos un ejemplo de método (tipo void , no regresa ningún tipo de valor). ATENTO a que el método está situado DENTRO de las llaves que definen la clase ...