8000 feat: Translate Exponential Search to Spanish... · JSSpagh/Algorithms-Explanation@9db7a00 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9db7a00

Browse files
committed
feat: Translate Exponential Search to Spanish...
...and fix some minor issues in Binary Search (Spanish translation).
1 parent 2cc6e81 commit 9db7a00

File tree

2 files changed

+68
-8
lines changed

2 files changed

+68
-8
lines changed

es/Algoritmos de búsqueda/Búsqueda binaria.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,26 @@ Dada una matriz ordenada de `n` elementos, escriba una función para buscar el
1616

1717
#### Complejidad horaria
1818

19-
`O(log n)` Peor caso
20-
`O(1)` Mejor caso (Si el elemento central de la matriz inicial es el elemento de destino)
19+
`O(log n)`- Peor caso
20+
`O(1)`- Mejor caso (Si el elemento central de la matriz inicial es el elemento de destino)
2121

2222
#### Complejidad espacial
2323

24-
O(1) Para enfoque iterativo
25-
O(log n) Para el enfoque recursivo debido a la pila de llamadas de recursividad
24+
`O(1)`- Para enfoque iterativo
25+
`O(log n)`- Para el enfoque recursivo debido a la pila de llamadas de recursividad
2626

2727
#### Ejemplo
2828

2929
```
3030
arr = [1,2,3,4,5,6,7]
3131
3232
target = 2
33-
Initially the element at middle index is 4 which is greater than 2. Therefore we search the left half of the
34-
array i.e. [1,2,3].
35-
Here we find the middle element equal to target element so we return its index i.e. 1
33+
Inicialmente, el elemento en el índice medio es 4 que es mayor que 2. Por lo tanto, buscamos la mitad izquierda de la
34+
matriz, es decir, [1,2,3].
35+
Aquí encontramos el elemento central igual al elemento objetivo por lo que devolvemos su índice, es decir, 8000 1
3636
3737
target = 9
38-
Binary Search should return -1 as 9 is not present in the array
38+
Búsqueda binaria debe devolver -1 como 9 no está presente en la matriz
3939
```
4040

4141
#### Enlaces de implementación de código
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Búsqueda exponencial
2+
3+
#### Requisitos previos
4+
5+
- [Algoritmo de búsqueda binaria](https://github.com/faridevnz/Algorithms-Explicación/blob/master/en/Search%20Algorithms/Binary%20Search.md)
6+
7+
#### Declaración de problema
8+
9+
Dada una matriz ordenada de elementos `*n*`, escriba una función para buscar el índice de un elemento determinado (destino)
10+
11+
#### Enfoque
12+
13+
- Búsqueda del **rango** dentro del cual se incluye el objetivo aumentando *index* por poderes de 2
14+
- Si este rango existe en la matriz aplicar el algoritmo de búsqueda binaria sobre él
15+
- Más retorno -1
16+
17+
#### Ejemplo
18+
19+
```markdown
20+
arr = [1, 2, 3, 4, 5, 6, 7, ... 998, 999, 1_000]
21+
22+
objetivo = 998
23+
índice = 0
24+
1. BÚSQUEDA DEL RANGO
25+
índice = 1, 2, 4, 8, 16, 32, 64, ..., 512, ..., 1_024
26+
después de 10 iteración tenemos el índice en 1_024 y fuera de la matriz
27+
2. BÚSQUEDA BINARIA
28+
Ahora podemos aplicar la búsqueda binaria en el subarray de 512 y 1_000.
29+
```
30+
31+
**Nota**: aplicamos la búsqueda binaria de 512 a 1_000 porque en `i = 2^10 = 1_024` la matriz está finisced y el número de destino es menor que el índice más reciente de la matriz ( 1_000 ).
32+
33+
#### Complejidad horaria
34+
35+
**Peor caso:** `O(log *i*)` donde `*i* = índice` (posición) del objetivo
36+
37+
**Mejor caso:** `O(*1*)`
38+
39+
#### Explicación de complejidad
40+
41+
- La complejidad de la primera parte del algoritmo es **`O( log *i* )`** porque si *i* es la posición del destino en la matriz, después de duplicar la búsqueda *index* `⌈log(i)⌉` veces, el algoritmo estará en un índice de búsqueda que es mayor o igual que *i*. Podemos escribir `2^⌈log(i)⌉ >= i`
42+
- La complejidad de la segunda parte del algoritmo también es **`O ( log *i* )`** porque se trata de una simple búsqueda binaria. La complejidad de búsqueda binaria ( como se explica [aquí](https://github.com/faridevnz/Algorithms-Explicación/blob/master/en/Search%20Algorithms/Binary%20Search.md) ) es `O(*n*)` donde *n* es la longitud de la matriz. En la búsqueda exponencial, la longitud de la matriz en la que se aplica el algoritmo es `2^i - 2^(i-1)`, en palabras significa `(la longitud de la matriz de principio a *i* ) - (la parte de matriz omitida hasta la iteración anterior)`. Es simple verificar que `2^i - 2^(i-1) = 2^(i-1)`.
43+
44+
Después de esta explicación detallada, podemos decir que la complejidad de la búsqueda exponencial es:
45+
46+
```mathematica
47+
O(log i) + O(log i) = 2O(log i) = O(log i)
48+
```
49+
50+
#### Búsqueda binaria vs Búsqueda exponencial
51+
52+
Echemos un vistazo a esta comparación con un ejemplo menos teórico. Imagine que tenemos una matriz con elementos `1_000_000` y queremos buscar un elemento que esté en la posición `4th`. Es fácil ver que:
53+
54+
- La búsqueda binaria comienza desde el centro de la matriz y llega a la 4ª posición después de muchas iteraciones
55+
- La búsqueda exponencial llega al 4º índice después de sólo 2 iteraciones
56+
57+
#### Enlaces de implementación de código
58+
59+
- [C++](https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/search/exponential_search.cpp)
60+
- [JavaScript](https://github.com/TheAlgorithms/Javascript/blob/master/Search/ExponentialSearch.js)

0 commit comments

Comments
 (0)
0