2. METODO DE BURBUJA
La Ordenación de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de
ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada
con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es
necesario revisar varias veces toda la lista hasta que no se necesiten más
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 pequeñas "burbujas". También es conocido como el
método del intercambio directo. Dado que solo usa comparaciones para operar
elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de
implementar.
6. METODO SHELL
El ordenamiento Shell (Shell sort en inglés) es un algoritmo de ordenamiento. El
método se denomina Shell en honor de su inventor Donald Shell.
El algoritmo Shell sort mejora el ordenamiento por inserción comparando
elementos separados por un espacio de varias posiciones. Esto permite que un
elemento haga "pasos más grandes" hacia su posición esperada. Los pasos
múltiples sobre los datos se hacen con tamaños de espacio cada vez más
pequeños. El último paso del Shell sort es un simple ordenamiento por inserción,
pero para entonces, ya está garantizado que los datos del vector están casi
ordenados.
7. PSEUDOCO DIGO METODO SHELL
ALGORITMO SHELL
INICIO
ENTERO INTERVALO, K, J, I, AUX
INTERVALO ß N DIV 2
MIENTRAS(INTERVALO > 0){
PARA(I ß INTERVALO – 1, HASTA ß N, I ß I + 1){
J ß I - INTERVALO
MIENTRAS(J >= 0){
K ß J + INTERVALO
SI(VECTOR[K] <= VECTOR[J]){
AUX ß VECTOR[J]
9. public static void shell(int A[]){
int salto, aux, i;
boolean cambios;
for(salto=A.length/2; salto!=0; salto/=2){
cambios=true;
while(cambios){ // Mientras se intercambie algún elemento
cambios=false;
for(i=salto; i< A.length; i++) // se da una pasada
if(A[i-salto]>A[i]){ // y si están desordenados
aux=A[i]; // se reordenan
A[i]=A[i-salto];
A[i-salto]=aux;
cambios=true; // y se marca como cambio.
}
}
}
ORDENAMIENTO SHELL EN JAVA
10. QUICK SORT
El ordenamiento rápido (quicksort en inglés) es un algoritmo creado por el
científico británico en computación C. A. R. Hoare, basado en la técnica de divide y
vencerás, que permite, en promedio, ordenar n elementos en un tiempo
proporcional a n log n.
11. PSEUDOCODIGO ORDENAMIENTO QUICK SORT
inicio
variables A: arreglo[1..100] entero
variables i,j,central:entero
variables primero, ultimo: entero
para i = 1 hasta 100
leer(A[i])
Fin para
primero = 1
ultimo = 100
qsort(A[],100)
Fin
13. public static void quicksort(int A[], int izq, int der) {
int pivote=A[izq]; // tomamos primer elemento como pivote
int i=izq; // i realiza la búsqueda de izquierda a derecha
int j=der; // j realiza la búsqueda de derecha a izquierda
int aux;
while(i<j){ // mientras no se crucen las búsquedas
while(A[i]<=pivote && i<j) i++; // busca elemento mayor que pivote
while(A[j]>pivote) j--; // busca elemento menor que pivote
ORDENAMIENTO QUICK SORT EN JAVA
14. if (i<j) { // si no se han cruzado
aux= A[i]; // los intercambia
A[i]=A[j];
A[j]=aux;
}
}
A[izq]=A[j]; // se coloca el pivote en su lugar de forma que tendremos
A[j]=pivote; // los menores a su izquierda y los mayores a su derecha
if(izq<j-1)
quicksort(A,izq,j-1); // ordenamos subarray izquierdo
if(j+1 <der)
quicksort(A,j+1,der); // ordenamos subarray derecho
}
ORDENAMIENTO QUICK SORT EN JAVA
15. ORDENAMIENTO POR SELECCIÓN
El algoritmo de ordenación por el método de selección directa es un algoritmo que
se basa en realizar varias pasadas, intentando encontrar en cada una de ellas el
elemento que según el criterio de ordenación es mínimo y colocándolo
posteriormente en su sitio.
Realiza una enorme cantidad de comparaciones, pero en contrapartida, muy pocos
intercambios. Eso hace que su utilización se restrinja en general a dos situaciones:
o bien necesitamos un algoritmo sencillito para ordenar unos pocos datos y
cogemos éste mismo que no está mal y es facil de recordar, o bien tenemos una
situación en la cual escribir en el array es mucho más gravoso que leer, como
puede ser un escenario en el que intervengan determinados dispositivos de
almacenamiento o memorias tipo flash, eeprom, etc. para el soporte de los datos.
16. ORDENAMIENTO POR SELECCIÓN
Explicación:
Su funcionamiento es el siguiente:
Buscar el mínimo o máximo elemento de la lista
Intercambiarlo con el primero
Buscar el mínimo o el máximo en el resto de la lista
Intercambiarlo con el segundo
Y en general:
Buscar el mínimo o máximo elemento entre una posición i y el final de la lista
Intercambiar el mínimo o máximo con el elemento de la posición i.
17. METODOS DE BUSQUEDA
Un algoritmo de búsqueda es aquel que está
diseñado para localizar un elemento con ciertas
propiedades dentro de una estructura de datos; por
ejemplo, ubicar el registro correspondiente a cierta
persona en una base de datos, o el mejor
movimiento en una partida de ajedrez.
18. BUSQUEDA SECUENCIAL
Este método se usa para buscar un elemento de un vector, es explorar
secuencialmente el vector, es decir; recorrer el vector desde el prior elemento hasta
el último. Si se encuentra el elemento buscado se debe visualizar un mensaje
similar a “Fin de Búsqueda” o “Elemento encontrado” y otro que diga “posición=”
en caso contrario, visualizar un mensaje similar a “Elemento no existe en la Lista”.
Este tipo de búsqueda compara cada elemento del vector con el valor a encontrar
hasta que este se consiga o se termine de leer el vector completo.
19. PSEUDOCODIGO DE BUSQUEDA SECUENCIAL
V es vector de elementos de dimensión N
K es elemento
para i <- 1 hasta N repite:
si V[i]=K entonces
salida <- "Encontrado"
fin fsi
Fin para
salida <- "No se ha encontrado el elemento"
20.
21. BUSQUEDA SECUENCIAL EN JAVA
public int busquedaSecuencial(int []arreglo,int dato){
int posicion = -1;
for(int i = 0; i < arreglo.length; i++){ //recorremos todo el arreglo
if(arreglo[i] == dato){ //comparamos el elemento en el arreglo con el buscado
posicion = i; //Si es verdadero guardamos la posicion
break; //Para el ciclo
}
}
return posicion;
}
22. BUSQUEDA BINARIA
Es un método que se basa en la división sucesiva del espacio ocupado por
el vector en sucesivas mitades, hasta encontrar el elemento buscado.
Esta búsqueda utiliza un método de “divide y vencerás” para localizar el
valor deseado. Con este método se examina primero el elemento central
de la lista; si este es el elemento buscado entonces la búsqueda ha
terminado. En caso contrario se determina si el elemento buscado está en
la primera o segunda mitad de la lista y a continuación se repite el
proceso anterior, utilizando el elemento central de esta sublista. Este tipo
de búsqueda se utiliza en vectores ordenados.
23. PSEUDOCODIO BUSQUEDA BIANRIA
Función « Main »
Inicio
Constante VERDAD = 1
Constante FALSO = 0
Constante TAM = 50
Constante MAX = 100
Variables A [TAM], b, i. = Enteros.
Para i 0 hasta i < TAM hacer
A [ i ] = (rand() % MAX) + 1
Mostrar A [ i ].
Fin para
Llamar procedimiento burbuja (A, TAM)
24. Función « Main » Para i <- 0 hasta i < TAM hacer
Mostrar A[ i ].
Fin para.
Imprimir “Elemento que se desea buscar: “.
Leer b.
Si (! Función búsqueda (A, b, 0, TAM – 1) entonces
Mostrar “Elemento no localizado”.
Fin si
Fin
PSEUDOCODIO BUSQUEDA BIANRIA
25. Procedimiento « Burbuja »
Procedimiento burbuja (*A, n)
Variables temp, i, j = enteros
Para i 0 hasta i < n hacer
Para j 0 hasta j < n hacer
Si A[ j ] > A [ j + 1 ] entonces
temp = A [ j ]
A [ j ] = A [ j +1 ]
A [ j + 1 ] = temp
Fin si
Fin para
Fin para
Fin Procedimiento burbuja.
PSEUDOCODIO BUSQUEDA BIANRIA
26. Función « Búsqueda »
Función búsqueda (*A, b, inicial, final)
Variables m = (inicial + final) / 2 = entero
Si (A [ m ] == b) entonces
Mostrar “Elemento encontrado: “, b
Devolver VERDAD.
Sino si (inicial == final) entonces
Devolver FALSO
Sino si (A [ m ] < b) entonces
Devolver Función Búsqueda (*A, b, m + 1, final)
Sino si (A [ m ] > b) entonces
Devolver Función Búsqueda (*A, b, inicial, m - 1)
Fin si
Fin Función búsqueda.
PSEUDOCODIO BUSQUEDA BIANRIA
28. BUSQUEDA BINARIA EN JAVA
class BusquedaBinaria{
/** * Busca un valor numerico dentro de un arreglo numerico...
* previamente ordenado usando el metodo de busqueda binaria *
public static int busquedaBinaria(int vector[], int dato){
int n = vector.length;
int centro,inf=0,sup=n-1;
while(inf<=sup){
centro=(sup+inf)/2;
if(vector[centro]==dato){
return centro;
}else if(dato < vector [centro] ){
sup=centro-1;
} else {