METODO DE ORDENACION POR INSERCION.
La ordenación por inserción inicialmente ordena los dos primeros miembros del arreglo. Después
el algoritmo inserta el tercer elemento en su posición correcta de acuerdo a los otros dos. A
continuación se inserta el cuarto elemento en la posición correspondiente y proceso continua hasta
que todos los elementos han sido ordenados.
La ordenación por inserción es el último de los algoritmos sencillos de ordenación.
el algoritmo inserta el tercer elemento en su posición correcta de acuerdo a los otros dos. A
continuación se inserta el cuarto elemento en la posición correspondiente y proceso continua hasta
que todos los elementos han sido ordenados.
La ordenación por inserción es el último de los algoritmos sencillos de ordenación.
Ejemplo suponiendo que tenemos el siguiente arreglo: 4 - 3 - 5 - 2 - 1
Inicialmente hay que almacenar (guardar) el segundo elemento (3) que es el que se va a comparar
con el primero.
La variable temp toma el valor del segundo elemento: 3. El primer elemento es el 4. Ahora
comparamos: 3 es menor que 4. Por consiguiente desplazamos el 4 una posición a la derecha y
después
4 - 4 - 5 - 2 - 1
3 - 4 - 5 - 2 - 1 copiamos el 3 en su lugar. (Observe que 3 se había guardado en la variable temp
para evitar que se perdiera)
El siguiente elemento es 5. (hay que guardarlo) Comparamos con 4. Es mayor que 4, así que no hay
intercambios.
Continuamos con el 2 (hay que guardarlo). Es menor que cinco: desplazamos el 5 una posición a la
derecha quedando:
3 - 4 - 5 - 5 - 1
Comparamos (el 2 que está guardado) con 4: es menor, así que desplazamos el 4 una
posición a la derecha:
3 - 4 - 4 - 5 - 1
Comparamos (el 2 que está guardado) con 3. Desplazamos el 3 una posición a la derecha:
3 - 3 - 4 - 5 - 1
Finalmente copiamos el 2 en su posición final:
2 - 3 - 4 - 5 - 1
El último elemento a ordenar es el 1(hay que guardarlo). Que es menor que 5, así que
desplazamos el 5 una posición a la derecha:
2 - 3 - 4 - 5 - 5
Continuando con el procedimiento la lista va quedando así:
2 - 3 - 4 - 4 - 5
2 - 3 - 3 - 4 - 5
2 - 2 - 3 - 4 - 5
1 - 2 - 3 - 4 - 5
Hasta que finalmente la lista esta ordenada.
Inicialmente hay que almacenar (guardar) el segundo elemento (3) que es el que se va a comparar
con el primero.
La variable temp toma el valor del segundo elemento: 3. El primer elemento es el 4. Ahora
comparamos: 3 es menor que 4. Por consiguiente desplazamos el 4 una posición a la derecha y
después
4 - 4 - 5 - 2 - 1
3 - 4 - 5 - 2 - 1 copiamos el 3 en su lugar. (Observe que 3 se había guardado en la variable temp
para evitar que se perdiera)
El siguiente elemento es 5. (hay que guardarlo) Comparamos con 4. Es mayor que 4, así que no hay
intercambios.
Continuamos con el 2 (hay que guardarlo). Es menor que cinco: desplazamos el 5 una posición a la
derecha quedando:
3 - 4 - 5 - 5 - 1
Comparamos (el 2 que está guardado) con 4: es menor, así que desplazamos el 4 una
posición a la derecha:
3 - 4 - 4 - 5 - 1
Comparamos (el 2 que está guardado) con 3. Desplazamos el 3 una posición a la derecha:
3 - 3 - 4 - 5 - 1
Finalmente copiamos el 2 en su posición final:
2 - 3 - 4 - 5 - 1
El último elemento a ordenar es el 1(hay que guardarlo). Que es menor que 5, así que
desplazamos el 5 una posición a la derecha:
2 - 3 - 4 - 5 - 5
Continuando con el procedimiento la lista va quedando así:
2 - 3 - 4 - 4 - 5
2 - 3 - 3 - 4 - 5
2 - 2 - 3 - 4 - 5
1 - 2 - 3 - 4 - 5
Hasta que finalmente la lista esta ordenada.
CÓDIGO FUENTE:
package vista;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
Scanner t=new Scanner(System.in);
System.out.println("Ingrese el tamaño del arreglo : ");
int tamaño=t.nextInt();
int[] arreglo=new int[tamaño];
System.out.println("\nARREGLO NORMAL");
for (int i = 0; i < arreglo.length; i++) {
System.out.println("Ingrese el elemento: "+(i+1)+" : ");
arreglo[i]=t.nextInt();
}
for (int i = 0; i < arreglo.length; i++) {
System.out.print(arreglo[i]+" ");
}
for (int i = 1; i < arreglo.length; i++){
int aux = arreglo[i];
int j = i - 1;
while ((j >= 0) && (aux < arreglo[j])){
arreglo[j + 1] = arreglo[j];
j--;
}
arreglo[j + 1] = aux;
}
System.out.println("**************************");
for (int k = 0; k < arreglo.length; k++) {
System.out.print(arreglo[k]+" ");
}
}
}
int aux = arreglo[i];
int j = i - 1;
while ((j >= 0) && (aux < arreglo[j])){
arreglo[j + 1] = arreglo[j];
j--;
}
arreglo[j + 1] = aux;
}
System.out.println("**************************");
for (int k = 0; k < arreglo.length; k++) {
System.out.print(arreglo[k]+" ");
}
}
}
Comentarios
Publicar un comentario