Sunteți pe pagina 1din 6

La Ordenacin de burbuja.

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.
Fuerza bruta lgica. (Consiste en enumerar sistemticamente todos los posibles candidatos para la solucin
de un problema, con el fin de chequear si dicho candidato satisface la solucin al mismo).
Tcnica que utiliza la repeticin exhaustiva de pasos simples con el fin de encontrar una solucin ptima.
Este mtodo consiste en acomodar el vector moviendo el mayor hasta la ltima casilla comenzando desde la
casilla cero del vector hasta haber acomodado el nmero ms grande el la ltima posicin, una vez
acomodado el ms grande, prosigue a encontrar y acomodar el siguiente ms grande comparando de nuevo
los nmeros desde el inicio del vector, y as sigue hasta ordenar todo los elementos el arreglo
Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del vector vuelve a compararlo
cuando esto ya no es necesario.
En la primera pasada realizamos (n-1) comparaciones, en la segunda pasada (n-2) comparaciones, en la
tercera pasada (n-3) comparaciones y as sucesivamente hasta llegar a 2 y 1 comparaciones entre claves,
siendo n el nmero de elementos del arreglo.
El algoritmo de ordenacin por el mtodo de la burbuja, tambin conocido como intercambio directo, es uno
de los ms simples que se conocen.

Se basa en una serie de intercambios entre elementos adyacentes. Esos intercambios dan la impresin de
que cada elemento va ascendiendo a travs del array acercndose cada vez ms a su posicin final,
recordando a cmo ascienden las burbujas de gas en un lquido.

A efectos prcticos, el algoritmo de la burbuja no es adecuado prcticamente para ninguna situacin, ya que
realiza muchas comparaciones y muchos intercambios. Los hay similares que se comportan bastante mejor.
Su inters es ms bien terico, ya que sirve para establecer comparativas con otros mtodos y extraer
conclusiones tericas.

Este algoritmo se basa en hacer comparaciones, as que para que realice su trabajo de ordenacin son
imprescindibles dos cosas: un array o estructura similar de elementos comparables y un criterio claro de
comparacin, tal que dados dos elementos nos diga si estn en orden o no.

Es un algoritmo estable de ordenacin interna, y su complejidad temporal en el peor caso es de O(n
2
),
mientras que en el mejor caso -que el array ya est totalmente ordenado- puede llegar a (n) siendo n el
tamao del array a ordenar. En cuanto a la complejidad espacial, es muy ahorrativo: tan solo necesita una
variable temporal para realizar los intercambios, as que su gasto de memoria es constante, sea cual sea el
tamao del array.

El algoritmo consiste en realizar varias pasadas sobre el array, logrando que en cada pasada el elemento de
mayor valor se coloque al final del array. Para lograrlo, en cada pasada es necesario recorrer el array
realizando comparaciones e intercambios. Por eso, se suele implementar con dos bucles, uno anidado dentro
del otro. El bucle exterior realiza las pasadas y el interior recorre el array realizando comparaciones e
intercambios.


METODO DE INSERCIN.
Este mtodo toma cada elemento del arreglo para ser ordenado y lo compara con los que se encuentran en
posiciones anteriores a la de l dentro del arreglo. Si resulta que el elemento con el que se est comparando
es mayor que el elemento a ordenar, se recorre hacia la siguiente posicin superior. Si por el contrario, resulta
que el elemento con el que se est comparando es menor que el elemento a ordenar, se detiene el proceso
de comparacin pues se encontr que el elemento ya est ordenado y se coloca en su posicin (que es la
siguiente a la del ltimo nmero con el que se compar).

Procedimiento Insertion Sort
Este procedimiento recibe el arreglo de datos a ordenar a[] y altera las posiciones de sus elementos hasta
dejarlos ordenados de menor a mayor. N representa el nmero de elementos que contiene a[].
paso 1: [Para cada pos. del arreglo] For i <- 2 to N do
paso 2: [Inicializa v y j] v <- a[i]
j <- i.
paso 3: [Compara v con los anteriores] While a[j-1] > v AND j>1 do
paso 4: [Recorre los datos mayores] Set a[j] <- a[j-1],
paso 5: [Decrementa j] set j <- j-1.
paso 5: [Inserta v en su posicin] Set a[j] <- v.
paso 6: [Fin] End.
Ejemplo:
Si el arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'], el algoritmo va a recorrer el arreglo de
izquierda a derecha. Primero toma el segundo dato 's' y lo asigna a v y itoma el valor de la posicin actual
de v.
Luego compara esta 's' con lo que hay en la posicin j-1, es decir, con 'a'. Debido a que 's' no es menor que 'a'
no sucede nada y avanza i.
Ahora v toma el valor 'o' y lo compara con 's', como es menor recorre a la 's' a la posicin de la'o'; decrementa
j, la cual ahora tiene la posicin en dnde estaba la 's'; compara a 'o' con a[j-1] , es decir, con 'a'. Como no es
menor que la 'a' sale del for y pone la 'o' en la posicin a[j]. El resultado hasta este punto es el arreglo
siguiente: a = ['a','o','s','r',....]
As se contina y el resultado final es el arreglo ordenado :
a = ['a','a','e','e','g','i','l','m','n','o','p','r','s','t','x']
ORDENACION POR INSERCION DIRECTA

Supngase que se desea ordenar los siguientes claves del arreglo A utilizando el mtodo de insercin directa
el cual consiste en insertar un elemento del arreglo en la parte izquierda del mismo que ya se encuentra
ordenada. Este proceso se repite desde el segundo hasta el n-esimo elemento.

Ejemplo 1:
A= 15, 67, 08, 16, 44, 27, 12, 35
Comparaciones realizadas:
1 pasada A[2] < A[1] 67 < 15 No hay intercambio
A= 15, 67, 08, 16, 44, 27, 12, 35
2 pasada A[3] < A[2] 08 < 67 Si hay intercambio
A= 15, 08, 67, 16, 44, 27, 12, 35
3 pasada A[4] < A[3] 08 < 15 Si hay intercambio
A= 08, 15, 67, 16, 44, 27, 12, 35
Y as sucesivamente...

INSERCION (A,N)
Insercion(A,N)
{El algoritmo ordena los elementos del arreglo utlizando el mtodo de insercin directa A es un arreglo de N
elementos} {I, aux y k son variables de tipo entero}
1.- Repetir con I desde 2 hasta N Hacer aux<- A[I] y k<- I-1
a. Repetir mientras(aux < [k]) y (k > 1) , Hacer A[k+1]<- A[k] y k<-- k-1
b. {fin del ciclo del paso 1.1}
c. Si a[k]<=aux Entonces: Hacer A[k+1]<-aux
Si no Hacer A[k+1]<- A[k], A[k]<-A[k]
d. { fin del condicional del paso 1.3}
2. {fin del condicional del paso1}

Prueba de escritorio:
Si A= 15, 67, 08, 16, 44, 27, 12, 35
1 pasada 08, 67, 15, 16, 44, 27, 12, 35
2 pasada 08, 15, 67, 16, 44, 27, 12, 35
3 pasada 08, 15, 16, 67, 44, 27, 12, 35
4 pasada 08, 15, 16, 44, 67, 27, 12, 35
5 pasada 08, 15, 16, 44, 27, 67, 12, 35
6 pasada 08, 15, 16, 44, 27, 12, 67, 35
7 pasada 08, 15, 16, 44, 27, 12, 35, 67

ANALISIS DE EFICIENCIA DEL METODO DE INSERCION DIRECTA

En general afirmar que si el arreglo se encuentra ordenado se efectan como mximo n-1 comparaciones y o
movimientos entre elementos Cmin = n-1.

El nmero mximo de comparaciones y movimientos se produce cuando los elementos del arreglo estn en
orden inverso
Cmax = 1+2+3+............+(n-1) = n*(n-1)/2
Cmax= (n2-n)/2

El nmero de comparaciones promedio que es cuando los elementos aparecen en el arreglo en forma
aleatoria, puede ser calculado mediante la suma de las comparaciones mnimas y mximas divididas entre 2.
Cmed = [(n-1) + (n2-n)/2]/2
Al hacer la operacin, nos queda:
Cmed = (n2+n-2)/4
Respecto al nmero de movimientos Knuth obtiene los siguiente:
Mmin = 0
Mmed = (n2-n)/4
Mmax = (n2-n)/2

El tiempo necesario para ejecutar el algoritmo es proporcionar a n2, O(n2).
A pesar de ser un mtodo ineficiente y recomendable solo cuando n es pequea, el mtodo de insercin
directa se comporta mejor que el mtodo de intercambio directo analizado anteriormente.
Anlisis del algoritmo
En el mejor de los casos, el array estar inicialmente ordenado, entonces el bucle interno (mientras) slo
ejecuta el paso de comparacin, que siempre ser falso. Esto implica que en el mejor de los casos el nmero
de comparaciones sera n-1. Adems, el nmero de asignaciones ser fijo para cada iteracin y, por tanto, el
coste asociado ser lineal con n.
En el peor de los casos, el array est inversamente ordenado y el nmero de comparaciones y asignaciones a
realizar ser mximo. En este caso, el nmero de pasos a realizar por el algoritmo es proporcional a 'n
cuadrado'.
En el caso medio, el algoritmo de insercin directa, tanto en el nmero de comparaciones como en el nmero
de asignaciones es de orden cuadrtico.

Bsqueda Binaria
El algoritmo de bsqueda binaria es un excelente mtodo para buscar datos dentro de una estructura
(generalmente un arreglo unidimensional). Se le da el nombre de bsqueda binaria por que el algoritmo divide
en dos el arreglo, aludiendo al concepto de bit, el cual puede tener dos estados.
La nica condicin para usar este algoritmo es que los datos dentro del arreglo estn ordenados de menor a
mayor.
La solucin mas fcil para realizar una bsqueda es por fuerza bruta, pero este mtodo puede resultar
bastante ineficiente cuando se tiene una gran cantidad de datos, ya que habra que buscar posicin por
posicin hasta encontrar el dato que queremos.

Solo se recorre todo el arreglo y verificamos si la posicin i es igual al dato que queremos buscar, el cdigo
anterior se puede mejorar simplemente agregandole una bandera, pero aun asi no es lo suficientemente
bueno.

El algoritmo de bsqueda binaria es el siguiente:

1. Se declaran los ndices superior e inferior. El inferior en 0 y el superior con el
tamao del arreglo menos 1.

2. Se calcula el centro del arreglo con la siguiente formula: centro = (superior + inferior) / 2
3. Verificamos si el arreglo en la posicin centro es igual al dato que buscamos. Si es
igual significa que encontramos el dato y retornamos centro.

4. Si son diferentes verificamos si el arreglo en la posicin centro es mayor al dato que
que queremos buscar. Si es mayor actualizamos superior: superior = centro - 1, si
no actualizamos inferior: inferior = centro + 1.

5. Volvemos al paso 2.

Si cuando ya no se cumpla la condicin del ciclo y no se encontr el dato retornamos -1
indicando que el dato no se encuentra en el arreglo.

Supongamos que tenemos el arreglo {2, 3, 5, 7, 9, 11, 14, 18, 22, 25} y queremos buscar el dato 18, entonces
el inferior toma el valor de 0 y superior el valor de 9 (ya que es tamao del arreglo menos 1).

Calculamos el centro, centro = (superior + inferior) / 2
centro = (9 + 0) / 2
centro = 4
divisin entera (ignorando la parte decimal).

Arreglo en la posicin centro es 9 (Arreglo [centro] = 9) ya que se empieza a contar desde 0.

Comprobamos si arreglo en la posicin centro es igual al dato que queremos buscar Arreglo [centro] =
dato, como Arreglo [centro] = 9 y dato = 18. No son iguales por lo tanto ahora verificamos si es mayor, en
este caso no lo es entonces actualizamos inferior = centro + 1, esto hace que podamos descartar todos los
datos del centro hacia atras, esto reduce nuestro arreglo a {11, 14, 18, 22, 25}. Y as seguiremos hasta
que Arreglo [centro] = dato.
Como se puede notar este mtodo es bastante eficiente en arreglos grandes, por ejemplo supongamos que
tenemos un arreglo de 10000 datos, y estamos buscando un dato que se encuentra en la posicin 6000, solo
en la primera vuelta del ciclo ya se pueden descartar los primeros 5000 valores, en cambio por fuerza bruta se
tendran que realizar esos 6000 ciclos para poder localizar el dato.

Burbuja = estable
Seleccin = estable
Insercin = estable

RECURRENCIA
Una recurrencia es un sistema de ecuaciones en donde una o ms de las ecuaciones del sistema estn
definidas en funcin de si mismas.
Para calcular el orden de un algoritmo recursivo es necesario resolver la recurrencia que define el algoritmo.
ESTABILIDAD DE ALGORITMOS DE ORDENAMIENTO
Un algoritmo de ordenacin es estable si el algoritmo preserva el orden relativo de los elementos con igual
valor.

S-ar putea să vă placă și