Ver código fonte

Update 'lista4.md'

capella 7 anos atrás
pai
commit
42b4fb435a
1 arquivos alterados com 35 adições e 4 exclusões
  1. 35 4
      lista4.md

+ 35 - 4
lista4.md

@@ -67,10 +67,10 @@ Mediana(v1, v2, p1, q1, p2, q2)
 1.    se q1-p1 = 0 
 2.        retorna v1[p1]
 3.    
-4.    j1l <- (q1-p1)/2
-5.    j2l <- (q2-p2)/2
-6.    j1u <- (q1-p1+1)/2
-7.    j2u <- (q2-p2+1)/2
+4.    j1l <- p1+(q1-p1)/2
+5.    j2l <- p2+(q2-p2)/2
+6.    j1u <- p1+(q1-p1+1)/2
+7.    j2u <- p2+(q2-p2+1)/2
 8.    
 9.    tmpv1 <- v1[j1l] + v1[j1u]
 10.   tmpv2 <- v2[j2l] + v2[j2u]
@@ -81,3 +81,34 @@ Mediana(v1, v2, p1, q1, p2, q2)
 16.       retorna Mediana(v1, v2, j1u, q1, p2, j2l)
 ```
 
+```ruby
+def Mediana(v1, v2, p1, q1, p2, q2)
+    if q1-p1 == 0 
+        return v1[p1]
+    end
+    
+    j1l = p1+(q1-p1)/2
+    j2l = p2+(q2-p2)/2
+    j1u = p1+(q1-p1+1)/2
+    j2u = p2+(q2-p2+1)/2
+
+    tmpv1 = v1[j1l] + v1[j1u]
+   	tmpv2 = v2[j2l] + v2[j2u]
+    
+   	if tmpv1 > tmpv2
+       	return Mediana(v1, v2, p1, j1l, j2u, q2)
+   	else
+       	return Mediana(v1, v2, j1u, q1, p2, j2l)
+   	end
+end
+
+size = 30
+v1 = Array.new(size) { rand(10...50) }.sort!
+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(" ")
+```
+