Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pseudocdigo 1 INSERTION-SORT
Entrada: A[1...n]
Salida: A[1...n]
1: key 0
2: i 0
3: para j 2 hasta n hacer
4:
key A[j]
5:
ij1
6:
mientras i > 0 y A[i] < key
7:
A[i + 1] A[i]
8:
n mientras
9:
A[i + 1] key
10: n para
hacer
Para el arreglo {45, 21, 95, 37, 21, 64}, este algoritmo funcionara de la siguiente manera:
22 < 45, sin intercambio
45, 21, 95, 37, 21, 64
95 > 45 > 21, intercambio
95, 45, 21, 37, 21, 64
37 > 21, intercambio
95, 45, 37, 21, 21, 64
21 = 21, sin intercambio
95, 45, 37, 21, 21, 64
64 > 21 > 21 > 37 > 45, intercambio
95, 64, 45, 37, 21, 21
2. Suma de binarios
2: C[] A.length + 1
3: para i B.length 1 bajar hasta 0 hacer
4:
si A[i] = 0 y B[i] = 0 entonces
5:
si acarreo = verdadero entonces
6:
C[i + 1] 1
7:
acarreo falso
8:
si no
9:
C[i + 1] 0
10:
n si
11:
si no, si A[i] = 0 y B[i] = 1 o A[i] = 1 y B[i] = 0
12:
si acarreo = verdadero entonces
13:
C[i + 1] 0
14:
si no
15:
C[i + 1] = 1
16:
n si
17:
si no, si acarreo = verdadero entonces
18:
C[i + 1] 1
19:
si no
20:
C[i + 1] 0
21:
acarreo verdadero
22:
n si
23:
si acarreo = verdadero entonces
24:
C[0] 1
25:
n si
26: n para
entonces
Pseudocdigo 3 SELECTION-SORT
Entrada: A[1...n]
Salida: A[1...n]
1: menor 0
2: posM enor 0
3: para i 0 hasta n 1 hacer
4:
posM enor i
5:
menor A[posM enor]
6:
para j i + 1 hasta n hacer
7:
si A[j] < menor entonces
8:
posM enor j
9:
menor A[posM enor]
10:
n si
11:
n para
12:
A[posM enor] A[i]
13:
A[i] menor
14: n para
El bucle externo se ejecuta n 1 veces y el bucle interno se ejecuta n veces por cada bucle externo
comenzando desde i + 1, es decir n i veces para j = 1. Se toma la lnea 7 como medida del tiempo de
ejecucin total del algoritmo, por tanto se tiene que:
n1
ni
XX
T (n) =
k, k = 1
i=1 j=1
9 no se ejecutarn.
ni
n1
XX
i=1 j=1
ni
X
1 = (n i)
j=1
n1
X
n1
X
i=1
i=1
(n i) =
n1
X
i=1
(n 1)[(n1)+1]
2
n(n 1)
n(n 1)
2
2
n n
n(n 1)
n2 n
=
2
2
n(n 1)
(n2 )
4. Si n = 1,000,000 entonces:
a ) T (n) = Clg(n)
Si
T (1000) = Clg1000
Clg1000 = 1000
C = 1000/lg1000
Entonces
T (1000000) = Clg1000000
Clg1000000
1000
lg1000 lg1000000
1000lg1000000
lg1000000
2000mls
b ) T (n) = C n
Si
T (1000)
= C 1000
C 1000 =1000
C = 1000/ 1000
Entonces
T (1000000)
= C 1000000
C 1000000
1000
1000000
1000
1000
1000000
1000000
1000000
1000
31622, 77mls
c ) T (n) = Cn
Si
T (1000) = C1000
C1000 = 1000
C=1
Entonces
T (1000000) = Cn
n = 1000000
d ) T (n) = Cnlg(n)
Si
T (1000) = Cnlg1000
Cnlg1000 = 1000
C = 1000/nlg1000
C = 1000/1000lg1000
C = 1000/1000 3
C = 1000/3000 = 1/3
Entonces
T (1000000) = Cnlg1000000
C1000000 lg1000000
1
3 1000000lg1000000
2000000
e ) T (n) = Cn2
Si
Cn2 = 1000
C = 1000/n2
C = 1000/10002
C = 1000/1000000
C = 1/1000
C = 0, 001
Entonces
T (1000000) = Cn2
Cn2 = 1/1000 10000002
10000002 /1000
1000000000
f ) T (n) = Cn3
T (n) = Cn3
C = 1000/10003
C = 1/1000000
Entonces
10000003 /1000000
1x101 3/1x10
10000000
g ) T (n) = C2n
T (n) = C2n
C2n = 1000
C = 1000/2n
C = 1000/21000000
h ) T (n) = Cn!
T (n) = Cn!
Cn! = 1000
C = 1000/n!
C = 1000/1000000!
6.
a ) Es 2n+1 = O(2n )?
2n+1 C1 2n
2n 2
C1
2n
2 C1
2n 2n C1 2n
2n 2n
C1
2n
2n C1
Falso, ya que no existe una constante C1 que limite todas las potencias de 2.
7. La funcin g(n) = nO(1) signica que hay alguna funcin f (n) tal que g(n) = nf (n) , y f (n) = O(1). En
otras palabras, f (n) es solo un valor constante f , y de esta forma g(n) = nf .
Suponiendo T (n) = nO(1) . As T (n) = nf para alguna constante f . Entonces T (n) = O(nf ).
Suponiendo T (n) = O(nk ). As T (n) Cnk para alguna constante C .
Asumiendo aqu que la notacin O() est denida para ser aplicada a n sucientemente grande.
Notar que para n 2 se tiene que C nC . As, para n 2, tenemos T (n) nC nk = nC+k . Aqu C y k
son constantes, As C + k = O(1). Finalmente T (n) = nO(1) .
8.
9.
T (bn/2c + 17)
bn/2c + 17
)
T ( n+102
4
T (bn/2c + 17)
bn/2c + 17
)
T ( n+102
4
n+102
4
n+102
4
)
T ( n+102
4
n+102
4
)
T ( n+102
4
n+102
4
Hasta T(1) = 1
Para cada nivel del arbol: n, n/21 , n/22 , n/23 , respectivamente.
n/2h = 1
n = 2h
h = log2 n
T (n) = nlgn
T ( n) clglg n
T (n) = clglg n + 1
1
T (n) = clg lgn + 1
2
T (n) = clglgn
T (n) = O(lglgn)
lgn1
X
(3/2)2 + (nlg3 )
i=0
(3/2)lgn 1
+ (nlg3 )
(3/2) 1
2(n(3/2)lgn n) + (nlg3 )
2n
3lgn
2n + (nlg3 )
2lgn
2(3lgn ) 2n + (nlg3 )
2nlg3 2n + (nlg3 )
(nlg3 )
T (n) = 3T (bn/2c) + n
3cbn/2clg3 cbn/2c + n
cn
3cnlg3
+n
lg3
2
2
cnlg3 cn/n + n
cnlg3
c2
b ) T (n 1) + 1/n
T (n) = T (n 1) + 1/n
T (n) = T (n 1) + 1/n = 1/n + 1/n 1 + 1/n 2 + ... + 1/2 + 1/T (1)
n
X
1
k
k=1
1+
n
X
k=2
1
1+
k
1
dx
x
1 + lnn O(lnn)
T (n) = (lnn)
lgn
11.
12.
(a/4)i = n
i=0