viernes, 4 de marzo de 2016

Insertion Sort


Dentro de los algoritmos de ordenamiento ESTABLES tenemos el método de inserción - insertion sort (ordenamiento por inserción)

Este método consiste en ordenar la estructura desplazando los elementos mayores hacia la parte derecha y los inferiores hacia la parte izquierda.


Ventajas y desventajas


Ventajas:

fácil implementación y requerimientos mínimos de memoria

Desventajas:

Realiza muchas comparaciones a la vez




            Funcionamiento

 "este algoritmo compara cada elemento de la lista después del primero (primera posición), con los elementos anteriores mirando si cumple la condición de ser menor ,desplazando una posición a la derecha a todos os elementos anteriores que cumplan la condición y luego se coloca el elemento en la posición del anterior desplazado"


esta  imagen gif muestra el funcionamiento del método ( isertion sort ) 


Ejemplo:  ordenando de menor a mayor (ascendentemente) 

 la siguiente lista de números:

7, 3, 10, 1, 9


La lista tiene 5 elementos  con lo cual tendremos que recorrer la lista 4 veces. Ya que la comparación se hará desde el segundo elemento de la lista, es decir recorremos la lista después del primer elemento hasta el último.






 código en java 




public class Ordenador_De_Numeros {




public void ordenarInsercion(int[] array) {




int aux;      // para hacer los cambios de posicion
int cont1;
int cont2;


for (cont1 = 1; cont1 < array.length; cont1++) {     // Movimiento de izquierda a derecha


aux = array[cont1]; //Toma el valor de la posición que va a ser comparada


for (cont2 = cont1 - 1; cont2 >= 0 && array[cont2] > aux; cont2--) {        // conteo de                                                                                                                   // derecha a izquierda                                                                                                                                                         

array[cont2 + 1] = array[cont2];   // realiza el movimiento de cambiar la posicion del numero                                                              //ordenadamente
array[cont2] = aux;


}
 }
   }
       }

----------------------------------------------------------------------------------------------------------------------

// llamada de objetos



package ordenamientoporinsercion;

public class Menu {

public static void main(String[] args) {

int[] arreglo = {5, 11, 15, 12, 4, 2, 23, 3, 4, 9, 1, 45, 50};    // arreglo a ordenar de menor                                                                                                  //a mayor

Ordenador_De_Numeros obj = new Ordenador_De_Numeros();


    obj.ordenarInsercion(arreglo);


for (int i = 0; i < arreglo.length; i++) {


      System.out.println(arreglo[i] + "\t");


      System.out.println("");

}
  }
    }



para descargar el código presiona clic sobre el siguiente enlace


 --------- Descargar Codigo ---------