capella 7 роки тому
батько
коміт
4cdcf5d9b6
1 змінених файлів з 16 додано та 1 видалено
  1. 16 1
      lista4.md

+ 16 - 1
lista4.md

@@ -138,5 +138,20 @@ $$T(x) = T(x/2) + 1 = (pela HI) = lg \space x + 1 $$
 
 Que é o que queríamos provar.
 
-###### 4. Para esta questão, vamos dizer que a mediana de um vetor A[p..r] com número inteiros é o valor que ficaria na posição A[b(p + r)/2c] depois que o vetor A[p..r] fosse ordenado. Dado um algoritmo linear “caixa-preta” que devolve a mediana de um vetor, descreva um algoritmo simples, linear, que, dado um vetor A[p..r] de inteiros distintos e um inteiro k, devolve o k-ésimo mínimo do vetor. (O k-ésimo mínimo de um vetor de inteiros  distintos é o elemento que estaria na k-ésima posição do vetor se ele fosse ordenado.)
+###### 4. Para esta questão, vamos dizer que a mediana de um vetor A[p..r] com número inteiros é o valor que ficaria na posição A[b(p + r)/2c] depois que o vetor A[p..r] fosse ordenado. Dado um algoritmo linear “caixa-preta” que devolve a mediana de um vetor, descreva um algoritmo simples, linear, que, dado um vetor A[p..r] de inteiros distintos e um inteiro k, devolve o k-ésimo mínimo do vetor. (O k-ésimo mínimo de um vetor de inteiros  distintos é o elemento que estaria na k-ésima posição do vetor se ele fosse ordenado).
+
+```
+Kesimo(A, p, r, k)
+    m <- mediana(A, p, r)
+    part <- particiona_com_elemento(A, p, r, m)
+    se p > k
+        retorna Kesimo(A, p, part, k)
+    senao se p < k
+        retorna Kesimo(A, part, r, k)
+    retorna A[part]
+```
+
+Note, o particiona é $O(n)$, assim como a mediana. Portanto o tempo de consumo desse algorítmo será $T(n) = T(n/2) + O(n)$. Vamos provar que é $O(n)$. Note que $T(1) = 1$
+
+BASE: $T(1) = 1 \leq c * 1 $