You are on page 1of 4

ALGORITMOS DE ORDENAMIENTO POR INTERCAMBIO

La Ordenacin de burbuja (Bubble Sort en ingls) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambindolos de posicin si estn en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten ms intercambios, lo cual significa que la lista est ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeas "burbujas". Tambin es conocido como el mtodo del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparacin, siendo el ms sencillo de implementar.

Una manera simple de expresar el ordenamiento de burbuja en pseudocdigo es la siguiente:

Este algoritmo realiza el ordenamiento de una lista a de n valores, en este caso de n trminos numerados del 0 al n-1, consta de dos bucles anidados uno con el ndice i, que da un tamao menor al recorrido de la burbuja en sentido inverso de 2 a n, y un segundo bucle con el ndice j, con un recorrido desde 0 hasta n-i, para cada iteracin del primer bucle, que indica el lugar de la burbuja. La burbuja son dos trminos de la lista seguidos, j y j+1, que se comparan, si el primero es menor que el segundo sus valores se intercambian. Esta comparacin se repite en el centro de los dos bucles, dando lugar a la postre a una lista ordenada, puede verse que el nmero de repeticiones sola depende de n, y no del orden de los trminos, esto es, si pasamos al algoritmo una lista ya ordenada, realizara todas las comparaciones exactamente igual que para una lista no ordenada, esta es una caracterstica de este algoritmo, luego veremos una variante que evita este inconveniente.

METODO SHELLSORT Este metodo es una mejora del algoritmo de ordenamiento por Insercion (Insertsort). Si tenemos en cuenta que el ordenamiento por insercion es mucho mas eficiente si nuestra lista de numeros esta semi-ordenada y que desplaza un valor una unica posicion a la vez. Durante la ejecucion de este algoritmo, los numeros de la lista se van casiordenando y finalmente, el ultimo paso o funcion de este algoritmo es un simple metodo por insercion que, al estar casi-ordenados los numeros, es ms eficiente. El algoritmo: 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; } } } }

METODO RAPIDO (quicksort)


Sin duda, este algoritmo es uno de los ms eficientes. Este mtodo es el ms rpido gracias a sus llamadas recursivas, basndose en la teora de divide y vencers. Lo que hace este algoritmo es dividir recursivamente el vector en partes iguales, indicando un elemento de inicio, fin y un pivote (o comodn) que nos permitira segmentar nuestra lista. Una vez dividida, lo que hace, es dejar todos los mayores que el pivote a su derecha y todos los menores a su izq. Al finalizar el algoritmo, nuestros elementos estan ordenados. Por ejemplo, si tenemos 3 5 4 8 basicamente lo que hace el algoritmo es dividir la lista de 4 elementos en partes iguales, por un lado 3, por otro lado 4 8 y como comodin o pivote el 5. Luego pregunta, 3 es mayor o menor que el comodin? Es menor, entonces lo deja al lado izq. Y como se acabaron los elementos de ese lado,

vamos al otro lado. 4 Es mayor o menor que el pivote? Menor, entonces lo tira a su izq. Luego pregunta por el 8, al ser mayor lo deja donde esta, quedando algo asi: 3458 En esta figura se ilustra de mejor manera un vector con mas elementos, usando como

ALGORITMOS DE BUSQQUEDA

BSQUEDA

SECUENCIAL

El ms sencillo de estos mtodos es la bsqueda secuencial. Esta bsqueda es aplicable a una tabla organizada como una arreglo o como una lista vinculada. Supongamos que vect es un arreglo de n llaves, de vect[0] a vect[n-1], y que x es el valor a buscar, de modo que x es la llave de vect. El algoritmo examina cada llave por turnos. Despus de encontrar una que coincida con el argumento de bsqueda, se retorna su ndice (que funciona como un apuntador o su registro). Si no se encuentra una coincidencia se retorna -1.

int int for( if( return return }

Secuencial j=0; x

( j =

int <

x, n; =

int

vect[] j++ vect[j]

){ j=0; ) ) j; (-1);

Busqueda Binaria Este algoritmo permite buscar de una manera ms eficiente un dato dentro de un arreglo, para hacer esto se determina el elemento central del arreglo y se compara con el valor que se est buscando, si coincide termina la bsqueda y en caso de no ser as se determina si el dato es mayor o menor que el elemento central, de esta forma se elimina una mitad del arreglo junto con el elemento central para repetir el proceso hasta encontrarlo o tener solo un elemento en el arreglo. Para poder aplicar este algoritmo se requiere que el arreglo este ordenado.

You might also like