Professional Documents
Culture Documents
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.
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; } } } }
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.
Secuencial j=0; x
( j =
int <
x, n; =
int
){ 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.