|
@@ -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(" ")
|
|
|
+```
|
|
|
+
|