Vous êtes sur la page 1sur 4

Algoritmos de ordenacin en Java. Mtodo de Ordenacin por Seleccin.

El mtodo de ordenacin por seleccin consiste en repetir los siguientes pasos:


Se busca el elemento ms pequeo del array y se coloca en la primera posicin.
Entre los restantes, se busca el elemento ms pequeo y se coloca en la segunda
posicin.
Entre los restantes se busca el elemento ms pequeo y se coloca en la tercera
posicin.
..
Este proceso se repite hasta colocar el ltimo elemento.
De forma grfica el proceso sera el siguiente:
Array original a ordenar: [50, 26, 7, 9, 15, 27]

El mtodo de ordenacin por seleccin en java para ordenar un array de enteros A


es el siguiente:
//mtodo java de ordenacin por seleccin
public static void seleccion(int A[]) {
int i, j, menor, pos, tmp;
for (i = 0; i < A.length - 1; i++) { // tomamos como menor el primero
menor = A[i]; // de los elementos que quedan por ordenar
pos = i; // y guardamos su posicin
for (j = i + 1; j < A.length; j++){ // buscamos en el resto
if (A[j] < menor) { // del array algn elemento
menor = A[j]; // menor que el actual
pos = j;
}
}
if (pos != i){ // si hay alguno menor se intercambia
tmp = A[i];
A[i] = A[pos];
A[pos] = tmp;
}
}

}
El tiempo de ejecucin del algoritmo de ordenacin por seleccin es del orden O(n2)

Un array es un medio de guardar un conjunto de objetos de la misma clase. Se


accede a cada elemento individual del array mediante un nmero entero
denominado ndice. 0 es el ndice del primer elemento yn-1 es el ndice del ltimo
elemento, siendo n, la dimensin del array. Los arrays son objetos en Java y como
tales vamos a ver los pasos que hemos de seguir para usarlos convenientemente

Declarar el array

Crear el array

Inicializar los elementos del array

Usar el array

Declarar un Array
Para declarar un array se escribe
tipo_de_dato [ ] nombre_del_array;
Para declarar un array de enteros escribimos
Int [ ] numeros;
Para crear un array de 4 nmero enteros
escribimos

Nmeros = new int [4];

La declaracin y la creacin del array se pueden


Int [ ] numeros = new int [4];
hacer en una misma lnea.

http://www.ecured.cu/index.php/Algoritmo_de_ordenamiento_por_selecci
%C3%B3n

ALGORITMO DE ORDENAMIENTO POR SELECCIN

Algoritmo de ordenamiento por Seleccin (Selection Sort en ingls): Consiste en


encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo
con el que est en la primera posicin. Luego el segundo mas pequeo, y as
sucesivamente hasta ordenarlo todo. Su implementacin requiere O(n2)
comparaciones e intercambios para ordenar una secuencia de elementos.

Descripcin
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener
que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando
hay que ordenar un vector de estructuras ms complejas, la operacin de
intercambiar los elementos sera ms costosa en este caso. Su funcionamiento se
puede definir de forma general como:

Buscar el mnimo elemento entre una posicin i y el final de la lista

Intercambiar el mnimo con el elemento de la posicin i

As, se puede escribir el siguiente pseudocdigo para ordenar una lista de n


elementos indexados desde el 1:
para i=1 hasta n-1;
minimo = i;
para j=i+1 hasta n
si lista[j] < lista[minimo] entonces
minimo = j
fin si
fin para
intercambiar(lista[i], lista[minimo])
fin para

Ejemplo
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e']. Se empieza
por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor
elemento es la primera 'a'. De manera que no ocurre ningn cambio. Luego se
procede a buscar el siguiente elemento y se encuentra la segunda 'a'. Esta se
intercambia con el dato que est en la segunda posicin, la 's', quedando el
arreglo
as
despus
de
dos
recorridos:
a
=
['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e']. El siguiente elemento, el tercero en orden
de menor mayor es la primera 'e', la cual se intercambia con lo que est en la
tercera posicin, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con
la 'r'. El arreglo ahora se ve de la siguiente manera: a =
['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r']. De esta manera se va buscando el
elemento que debe ir en la siguiente posicin hasta ordenar todo el arreglo.
Anlisis del Costo Computacional
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para
ordenar un vector de n trminos, tiene que realizar siempre el mismo nmero de
comparaciones. c(n)= (n2-n)/2 Cada bsqueda requiere comparar todos los
elementos no clasificados, de manera que el nmero de comparaciones c(n) no
depende del orden de los trminos, si no del nmero de trminos; por lo que este
algoritmo presenta un comportamiento constante independiente del orden de los
datos. Luego la complejidad es del orden n2.
Estabilidad, Ventajas y Desventajas
Puede que exista algo de discrepancia en cuanto a si es o no estable este
algoritmo, pero en realidad esta implementacin parece ser bastante estable. Se
puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con
la misma clave. Se vera claramente que el orden relativo entre ellos es
conservado. Algunos autores no lo consideran asi, pero independientemente de
esto, este algoritmo tienes entre sus ventajas: Es fcil su implementacin. No
requiere memoria adicional. Realiza pocos intercambios. Tiene un rendimiento
constante, pues existe poca diferencia entre el peor y el mejor caso. Como todos
tambin tiene algunas desventajas: Es lento y poco eficiente cuando se usa en
listas grandes o medianas. Realiza numerosas comparaciones.

Vous aimerez peut-être aussi