capella 7 жил өмнө
parent
commit
c67afad4c8
1 өөрчлөгдсөн 28 нэмэгдсэн , 10 устгасан
  1. 28 10
      lista4.md

+ 28 - 10
lista4.md

@@ -64,8 +64,10 @@ Na nossa função vamos ter dois vetores v1 e v2 com n elementos. Suponha que 3/
 
 ```
 Mediana(v1, v2, p1, q1, p2, q2)
-1.    se q1-p1 = 0 
-2.        retorna v1[p1]
+1.    se q1-p1 = 1
+2.        tmp <- [v1[p1], v1[q1], v2[p2], v2[q2]]
+3.        tmp <- ordena tmp
+2.        retorna tmp[3]
 3.    
 4.    j1l <- p1+(q1-p1)/2
 5.    j2l <- p2+(q2-p2)/2
@@ -76,15 +78,15 @@ Mediana(v1, v2, p1, q1, p2, q2)
 10.   tmpv2 <- v2[j2l] + v2[j2u]
 11.    
 12.   se tmpv1 > tmpv2
-13.       retorna Mediana(v1, v2, p1, j1l, j2u, q2)
+13.       retorna Mediana(v1, v2, p1, j1u, j2l, q2)
 15.   senão
-16.       retorna Mediana(v1, v2, j1u, q1, p2, j2l)
+16.       retorna Mediana(v1, v2, j1l, q1, p2, j2u)
 ```
 
 ```ruby
 def Mediana(v1, v2, p1, q1, p2, q2)
-    if q1-p1 == 0 
-        return v1[p1]
+    if q1-p1 == 1
+        return (v1[p1,2] + v2[p2,2]).sort[1 , 2].join(" ")
     end
     
     j1l = p1+(q1-p1)/2
@@ -96,9 +98,9 @@ def Mediana(v1, v2, p1, q1, p2, q2)
     tmpv2 = v2[j2l] + v2[j2u]
     
     if tmpv1 > tmpv2
-        return Mediana(v1, v2, p1, j1l, j2u, q2)
+        return Mediana(v1, v2, p1, j1u, j2l, q2)
     else
-        return Mediana(v1, v2, j1u, q1, p2, j2l)
+        return Mediana(v1, v2, j1l, q1, p2, j2u)
     end
 end
 
@@ -109,12 +111,28 @@ v2 = Array.new(size) { rand(10...50) }.sort!
 puts v1.join(" ")
 puts v2.join(" ")
 puts Mediana(v1, v2, 0, size-1, 0, size-1)
-puts (v1+v2).sort[size-1, 2].join(" ")
+sorted = (v1+v2).sort
+puts [sorted[(2*size - 1) / 2], sorted[(2*size) / 2]].join(" ")
+
 ```
 
 Vamos provar que é $O(lg n)$.
 
-$$T(0) = 1$$
+$$T(1) = 1$$
 $$T(n) = T(\lceil x/2 \rceil) + O(1)$$
 $$T(n) = T(\lceil x/2^i \rceil) + i$$
 
+Vamos supor que $x$ é potencia de 2, ou seja, $x = 2^i$
+
+$$T(x) = T(2^i/2^i) + i$$
+$$T(x) = T(1) + i$$
+$$T(x) = 1 + lg x$$
+
+Vamos provar por indução:
+
+BASE $x = 1, T(1) = 1$ e $1 + lg 1 = 1$
+
+HIPÓTESE $T(2^(i-1)) = 1 + i - 1 = i$
+
+$$T(2^i) = T(2^(i-1)) + i = (pela HI) = 2i $$
+