METODO DE ORDENACION POR SELECCION
Ordenación por selección, selecciona el elemento con el menor valor y lo intercambia con el primer
elemento, después de los restantes elementos , se obtiene de nuevo el menor valor y se lo intercambia
con el segundo y así sucesivamente hasta llegar a los dos últimos elementos.
Algoritmo:
Buscar el elemento más pequeño de la lista.
Intercambiarlo con el elemento ubicado en la primera posición de la lista.
Buscar el segundo elemento más pequeño de la lista.
Intercambiarlo con el elemento que ocupa la segunda posición en la lista.
Se repite este proceso hasta que se haya ordenado toda la lista.
Ordenar la siguiente lista: 8 - 5 - 2 - 3 - 1
Comenzamos buscando el menor elemento de todos. Es el 1. Lo intercambiamos con el 8 y la lista
queda así:
1 - 5 - 2 - 3 - 8
Ahora buscamos el menor elemento entre la segunda y la última posición. Es el 2. Lo intercambiamos
con el elemento en la segunda posición, es decir el 5. La lista queda así:
1 - 2 - 5 - 3 - 8
Buscamos el menor elemento entre la tercera posición y la última. Es el 3, que intercambiamos con el
5:
1 - 2 - 3 - 5 - 8
El menor elemento entre la cuarta y quinta posición es el 5, que no intercambiamos.
1 - 2 - 3 - 5 - 8
Ya está la lista ordenada.
Desafortunadamente el ciclo externo, como en la ordenación de la burbuja, se ejecuta n-1 veces y el
ciclo interno ½(n) veces, esto significa que este método requiere ½(n²-n) comparaciones, lo que lo
hace muy lento para un gran número de elementos.
elemento, después de los restantes elementos , se obtiene de nuevo el menor valor y se lo intercambia
con el segundo y así sucesivamente hasta llegar a los dos últimos elementos.
Algoritmo:
Buscar el elemento más pequeño de la lista.
Intercambiarlo con el elemento ubicado en la primera posición de la lista.
Buscar el segundo elemento más pequeño de la lista.
Intercambiarlo con el elemento que ocupa la segunda posición en la lista.
Se repite este proceso hasta que se haya ordenado toda la lista.
Ordenar la siguiente lista: 8 - 5 - 2 - 3 - 1
Comenzamos buscando el menor elemento de todos. Es el 1. Lo intercambiamos con el 8 y la lista
queda así:
1 - 5 - 2 - 3 - 8
Ahora buscamos el menor elemento entre la segunda y la última posición. Es el 2. Lo intercambiamos
con el elemento en la segunda posición, es decir el 5. La lista queda así:
1 - 2 - 5 - 3 - 8
Buscamos el menor elemento entre la tercera posición y la última. Es el 3, que intercambiamos con el
5:
1 - 2 - 3 - 5 - 8
El menor elemento entre la cuarta y quinta posición es el 5, que no intercambiamos.
1 - 2 - 3 - 5 - 8
Ya está la lista ordenada.
Desafortunadamente el ciclo externo, como en la ordenación de la burbuja, se ejecuta n-1 veces y el
ciclo interno ½(n) veces, esto significa que este método requiere ½(n²-n) comparaciones, lo que lo
hace muy lento para un gran número de elementos.
CODIGO 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]+" ");
}
System.out.println("\nORDENANDO POR SELECCION");
for (int i = 0; i < arreglo.length-1; i++) {
int menor=arreglo[i];
int pos=i;
for (int j = i+1; j <arreglo.length ; j++) {
if(arreglo[j]<menor){
menor=arreglo[j];
pos=j;
}
}
for (int i = 0; i < arreglo.length-1; i++) {
int menor=arreglo[i];
int pos=i;
for (int j = i+1; j <arreglo.length ; j++) {
if(arreglo[j]<menor){
menor=arreglo[j];
pos=j;
}
}
if (pos!=i){
int aux = arreglo[i];
arreglo[i] = arreglo[pos];
arreglo[pos] = aux;
}
}
System.out.println("**************************");
for (int k = 0; k < arreglo.length; k++) {
System.out.print(arreglo[k]+" ");
int aux = arreglo[i];
arreglo[i] = arreglo[pos];
arreglo[pos] = aux;
}
}
System.out.println("**************************");
for (int k = 0; k < arreglo.length; k++) {
System.out.print(arreglo[k]+" ");
}
}
}
Comentarios
Publicar un comentario