Вы находитесь на странице: 1из 6

Programa Desarrollado

Unidad 2. Algoritmos

Actividad 3. Desarrollo de algoritmos tpicos.


Instrucciones: Resuelve el siguiente problema, tomando en cuenta los lineamientos que se
presentan a continuacin. Recuerda que puede ser en leguaje C o en Java.
1. Obtn el cdigo del algoritmo de Bsqueda Binaria (binary search) en un lenguaje de
programacin con el que te sientas cmodo (tal vez C o Java) (existen numerosas fuentes
en las que lo puedes encontrar pues es muy popular).

Bsqueda binaria en java


class BusquedaAlgoritmo {
public static int buscar( int [] arreglo, int dato) {
int inicio = 0;
int fin = arreglo.length - 1;
int pos;
while (inicio <= fin) {
pos = (inicio+fin) / 2;
if ( arreglo[pos] == dato )
return pos;
else if ( arreglo[pos] < dato ) {
inicio = pos+1;
} else {
fin = pos-1;
}
}
return -1;
}
}
public class BusquedaBinaria {
public static void main (String args[]) {
// Llenar arreglo
int [] edades = new int [35];
for (int i = 0; i < edades.length ; i++)
edades[i] = i*i ;
// Mostrar arreglo.
for (int i = 0; i < edades.length ; i++)
System.out.println ( "edades["+i+"]: "+

edades[i]);

int resultado = BusquedaAlgoritmo.buscar(edades, 9);


if (resultado != -1) {
System.out.println ( "Encontrado en: "+ resultado);
} else {
System.out.println ( "El dato no se encuentra en el arreglo, o el
arreglo no est ordenado." );
}
}

Programa Desarrollado

Unidad 2. Algoritmos

Bsqueda binaria en pseudocdigo


DECLARE INTEGER x [] = [ -5, 12, 15, 20, 30, 72, 456 ]
DECLARE INTEGER loIndex = 0
DECLARE INTEGER hiIndex = LENGTH (x) - 1
DECLARE INTEGER midIndex, srch = 72
WHILE loIndex <= hiIndex
midIndex = (loIndex + hiIndex) / 2
IF srch > x [midIndex] THEN
loIndex = midIndex + 1
ELSE
IF srch < x [midIndex] THEN
hiIndex = midIndex - 1
ELSE
EXIT WHILE
END IF
END WHILE
IF loIndex > hiIndex THEN
PRINT srch, " not found"
ELSE
PRINT srch, " found"
END IF

END

Programa Desarrollado

Unidad 2. Algoritmos
Bsqueda binaria en Diagrama de Flujo

2. Comenta en tus propias palabras si crees que este algoritmo es ms eficiente que
los de bsqueda que te presentamos en esta unidad y por qu .
La nica ventaja de la bsqueda binaria es que reduce el tiempo empleado en
examinar elementos. El nmero mximo de elementos a examinar es log2n
(donde n es la longitud del array uni-dimensional). Por ejemplo, un array unidimensional con 1.048.576 elementos requiere que la bsqueda binaria
examine un mximo de 20 elementos. La bsqueda binaria tiene dos
inconvenientes; el incremento de complejidad y la necesidad de pre-ordenar el
array.

Programa Desarrollado

Unidad 2. Algoritmos

3. Obtn el cdigo del algoritmo QuickSort en un lenguaje de programacin con el


que te sientas cmodo (tal vez C o Java) (existen numerosas fuentes en las que lo
puedes encontrar dado que es muy popular).

QuickSort en pseudocdigo
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
Funcion qsort(primero, ultimo:entero)
i = primero
j = ultimo
central = A[(primero,ultimo) div 2]
repetir
mientras A[i]central
j = j - 1
fin mientras
si i < = j
aux = A[i]
A[j] = A[i]
A[i] = aux
i = i + 1
j = j - 1
fin si
hasta que i > j
si primero < j
partir(primero,j)
fin si
si i < ultimo
partir(i, ultimo)
fin si
fin funcion qsort

Programa Desarrollado

Unidad 2. Algoritmos

Diagrama de flujo QuickSort

Programa Desarrollado

Unidad 2. Algoritmos

4. Comenta en tus propias palabras si crees que este algoritmo es ms


eficiente que los de ordenamiento y por qu.
Todos los algoritmos logran el mismo objetivo: encontrar un elemento que coincida con
una clave de bsqueda dada, si es que existe dicho elemento. Sin embargo, hay varias
cosas que diferencian a un algoritmo de otro. La principal diferencia es la cantidad de
esfuerzo que requieren para completar la bsqueda. Una forma de describir este
esfuerzo es mediante la notacin, la cual indica el tiempo de ejecucin para el peor
caso de un algoritmo; es decir, qu tan duro tendr que trabajar un algoritmo para
resolver un problema. En los algoritmos de bsqueda y ordenamiento, esto depende
especficamente de cuntos elementos de datos haya.

Вам также может понравиться