diff --git a/src/ct0371-1/01/03/README.md b/src/ct0371-1/01/03/README.md index cd6eeee9..7e32c4c9 100644 --- a/src/ct0371-1/01/03/README.md +++ b/src/ct0371-1/01/03/README.md @@ -128,7 +128,7 @@ Allora dato un $d = \log_b a$, si ha: - **Caso 3** - $$\exists \epsilon > 0 : f(n) = \Omega(n^{n + \epsilon})\ \land\ \exists 0 < c < 1 : a \cdot f\left(\frac{n}{b}\right) \leq c \cdot f(n) \\ \Downarrow \\ T(n) = \Theta(f(n))$$ + $$\exists \epsilon > 0 : f(n) = \Omega(n^{d + \epsilon})\ \land\ \exists 0 < c < 1 : a \cdot f\left(\frac{n}{b}\right) \leq c \cdot f(n) \\ \Downarrow \\ T(n) = \Theta(f(n))$$ per cui, se ci vuole **più tempo per dividere il padre** in $a$ figli che per dividere tutti gli $a$ figli (per la _condizione ausiliaria_), allora la _complessità_ è **dominata dalla parte di suddivisione** $f(n)$. Per esempio, se diff --git a/src/ct0371-2/02/05/README.md b/src/ct0371-2/02/05/README.md index 0756aecf..c8e1b0d8 100644 --- a/src/ct0371-2/02/05/README.md +++ b/src/ct0371-2/02/05/README.md @@ -16,7 +16,7 @@ Dato che la maggior parte delle operazioni sono $O(h)$ dove $h$ è l'**altezza** if x == NIL or x.info == k return x else - if x.Key > k + if x.info > k return tree_search(x.left, k) else return tree_search(x.right, k) diff --git a/src/ct0371-2/03/02/README.md b/src/ct0371-2/03/02/README.md index a3e08eeb..20a45a56 100644 --- a/src/ct0371-2/03/02/README.md +++ b/src/ct0371-2/03/02/README.md @@ -14,19 +14,16 @@ merge(Array A, int p, int med, int r) L = [] left_len = med - p + 1 for i = 1 to left_len - push(L, A[p + i - 1]) + push(L, A[p + i-1]) R = [] right_len = r - med for i = 1 to right_len - push(R, A[q + j]) - - push(L, Infinity) - push(R, Infinity) + push(R, A[med + i]) i = 1, j = 1 for k = p to r - if L[i] <= R[j] + if i <= left_len and (j > right_len or L[i] <= R[j]) A[k] = L[i] i++ else