Ejercicios Unidad 1
Ejercicios Unidad 1
Ejercicios Unidad 1
El método consta de dos bucles for anidados. El bucle interno está formado por tres senten-
cias de complejidad constante, O(1). El bucle externo siempre realiza n-1 veces el bucle interno.
A su vez, el bucle interno hace k veces su bloque de sentencias, k varía de 1 a n-1, de modo que
el número total de iteraciones es:
n −1
C=∑k
k =1
n *(n -1)
(n-1) + (n-2) + ... +1 =
2
Aplicando las propiedades de la notación O, se deduce que la complejidad del método es O(n2).
El término que domina en el tiempo de ejecución es n2, se dice que la complejidad es cuadrática.
RESUMEN
Una de las herramientas típicas más utilizadas para definir algoritmos es el pseudocódigo.
El pseudocódigo es una representación en español (o en inglés, brasilero, etc.) del código
requerido para un algoritmo.
Los datos atómicos son datos simples que no se pueden descomponer. Un tipo de dato atómico
es un conjunto de datos atómicos con propiedades idénticas. Este tipo de datos se definen por
un conjunto de valores y un conjunto de operaciones que actúa sobre esos valores.
Una estructura de datos es un agregado de datos atómicos y datos compuestos en un conjunto
con relaciones bien definidas.
La eficiencia de un algoritmo se define, generalmente, en función del número de elementos a
procesar y el tipo de bucle que se va a utilizar. Las eficiencias de los diferentes bucles son:
Bucle lineal: f(n) = n
Bucle logarítmico: f(n) = log n
Bucle logarítmico lineal: f(n) = n * log n
Bucle cuadrático dependiente: f(n) = n(n+1)/2
Bucle cuadrático dependiente: f(n) = n2
Bucle cúbico: f(n) = n3
EJERCICIOS
1.1. El siguiente algoritmo pretende calcular el cociente entero de dos enteros positivos
(un dividendo y un divisor) contando el número de veces que el divisor se puede restar
del dividendo antes de que se vuelva de menor valor que el divisor. Por ejemplo, 14/3
proporcionará el resultado 4 ya que 3 se puede restar de 14 cuatro veces. ¿Es correcto?
Justifique su respuesta.
http://descargavariable.blogspot.com/
Algoritmos y estructuras de datos 21
Cuenta ← 0;
Resto ← Dividendo;
repetir
Resto ← Resto – Divisor
Cuenta ← Cuenta + 1
hasta _ que (Resto < Divisor)
Cociente ← Cuenta
1.2. El siguiente algoritmo está diseñado para calcular el producto de dos enteros nega-
tivos x e y por acumulación de la suma de copias de y (es decir, 4 por 5 se calcula
acumulando la suma de cuatro cinco veces). ¿Es correcto? Justifique su respuesta.
producto ← y;
cuenta ← 1;
mientras (cuenta < x) hacer
producto ← producto + y;
cuenta ← cuenta + 1
fin _ mientras
1.3. Determinar la O-grande de los algoritmos escritos en los ejercicios 1.2 y 1.3.
1.4. Diseñar un algoritmo que calcule el número de veces que una cadena de caracteres
aparece como una subcadena de otra cadena. Por ejemplo, abc aparece dos veces en
la cadena abcdabc, y la cadena aba aparece dos veces en la cadena ababa.
1.5. Diseñar un algoritmo para determinar si un número n es primo. (Un número primo
sólo puede ser divisible por él mismo y por la unidad.)
1.6. Determinar la O-grande de los algoritmos que resuelven los ejercicios 1.4 y 1.5.
1.7. Escribir un algoritmo que calcule la superficie de un triángulo en función de la base
y la altura (S = ½ Base x Altura).
1.8. Escribir un algoritmo que calcule y muestre la longitud de la circunferencia y el área
de un círculo de radio dado.
1.9. Escribir un algoritmo que indique si una palabra leída del teclado es un palíndromo. Un
palíndromo (capicúa) es una palabra que se lee igual en ambos sentidos como “radar”.
1.10. Calcular la eficiencia de los siguientes algoritmos:
a. i = 1
mientras (i <= n)
j = 1
mientras (j <= n)
j = j * 2
fin _ mientras
i = i + 1
fin _ mientras
http://descargavariable.blogspot.com/
22 Estructuras de datos en Java
b. i = 1
mientras (i <= n)
j = 1
mientras (j <= i)
j = j + 1
fin _ mientras
i = i + 1
fin _ mientras
c. i = 1
mientras (i <= 10)
j = 1
mientras (j <= 10)
j = j + 1
fin _ mientras
i = i + 2
fin _ mientras
http://descargavariable.blogspot.com/