Método de Burbuja
El método de
la burbuja es uno de los más simples, es tan fácil como comparar todos los
elementos de una lista contra todos, si se cumple que uno es mayor o menor a
otro, entonces los intercambia de posición.
Por ejemplo,
imaginemos que tenemos los siguientes valores:
5
|
6
|
1
|
0
|
3
|
Lo que haría
una burbuja simple, seria comenzar recorriendo los valores de izq. a derecha, comenzando por el 5. Lo compara con
el 6, con el 1, con el 0 y con el 3, si es mayor o menor (dependiendo si el
orden es ascendente o descendente) se intercambian de posición. Luego continua
con el siguiente, con el 6, y lo compara con todos los elementos de la lista,
esperando ver si se cumple o no la misma condición que con el primer elemento. Así,
sucesivamente, hasta el último elemento de la lista.
La estructura de este método es la siguiente:
for (i=1; i<LIMITE; i++){
for j=0 ; j<LIMITE - 1; j++){
if (vector[j] > vector[j+1]){
temp = vector[j];
vector[j] = vector[j+1];
vector[j+1] = temp;
}
}
}
Métodos de Inserción y Selección
El bucle
principal de la ordenación por inserción va examinando sucesivamente todos los
elementos de la matriz desde el segundo hasta el n-ésimo, e inserta cada uno en
el lugar adecuado entre sus predecesores dentro de la matriz.
La ordenación
por selección funciona seleccionando el menor elemento de la matriz y llevándolo
al principio; a continuación selecciona el siguiente menor y lo pone en la segunda
posición de la matriz y así sucesivamente.
La estructura de estos métodos es la siguiente:
Insercion(int
matrix[]){
int i, temp,
j;
for (i = 1; i < matrix.length; i++){
temp =
matrix[i];
j = i - 1;
while ( (matrix[j] > temp) && (j >= 0) ){
matrix[j + 1]
= matrix[j];
j--;
}
matrix[j + 1] = temp;
}
}
Seleccion(int[]matrix){
int i, j, k, p, buffer, limit = matrix.length-1;
for(k = 0; k < limit; k++){
p = k;
for(i = k+1; i <= limit; i++)
if(matrix[i] < matrix[p]) p = i;
if(p != k){
buffer = matrix[p];
matrix[p] = matrix[k];
matrix[k] =
buffer;
}
}
}
El bucle
principal de la ordenación por inserción va examinando sucesivamente todos los
elementos de la matriz desde el segundo hasta el n-ésimo, e inserta cada uno en
el lugar adecuado entre sus predecesores dentro de la matriz.
La ordenación
por selección funciona seleccionando el menor elemento de la matriz y llevándolo
al principio; a continuación selecciona el siguiente menor y lo pone en la segunda
posición de la matriz y así sucesivamente.
Método Shell Short
Este método
es una mejora del algoritmo de ordenamiento por Inserción (Insertsort).
Si tenemos en
cuenta que el ordenamiento por inserción es mucho más eficiente si nuestra
lista de números esta semi-ordenada y que desplaza un valor una única posición
a la vez.
Durante la ejecución
de este algoritmo, los números de la lista se van casi-ordenando y finalmente,
el último paso o función de este algoritmo es un simple método por inserción
que, al estar casi-ordenados los números, es más eficiente.
El algoritmo
de este método es el siguiente:
public void shellSort(int[] matrix) {
for ( int
increment = matrix.length / 2; increment > 0; increment =
(increment == 2 ? 1 : (int) Math.round(increment /
2.2)))
{
for (int i =
increment; i < matrix.length; i++)
{
for (int j = i;
j >= increment && matrix[j - increment] >
matrix[j]; j -=
increment)
{
int temp =
matrix[j];
matrix[j] = matrix[j - increment];
matrix[j - increment] = temp;
}
}
}
}

No hay comentarios:
Publicar un comentario