Skip to content

Commit f06281b

Browse files
Translation to Spanish of the Quick Select algorithm (#125)
* translation of the quick select algorithm * Update es/Algoritmos de selección/Selección Rápida.md Co-authored-by: David Leal <halfpacho@gmail.com> * fixes suggested and mispelled words * Update es/Algoritmos de selección/Selección Rápida.md Co-authored-by: David Leal <halfpacho@gmail.com> * Update es/Algoritmos de selección/Selección Rápida.md Co-authored-by: David Leal <halfpacho@gmail.com> * Update es/Algoritmos de selección/Selección Rápida.md Co-authored-by: David Leal <halfpacho@gmail.com> * Update es/Algoritmos de selección/Selección Rápida.md Co-authored-by: David Leal <halfpacho@gmail.com> * Update es/Algoritmos de selección/Selección Rápida.md Co-authored-by: David Leal <halfpacho@gmail.com> * Update es/Algoritmos de selección/Selección Rápida.md Co-authored-by: David Leal <halfpacho@gmail.com> * Update es/Algoritmos de selección/Selección Rápida.md Co-authored-by: David Leal <halfpacho@gmail.com> * Apply suggestions from code review Co-authored-by: David Leal <halfpacho@gmail.com>
1 parent cfaeef8 commit f06281b

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Selección rápida o Quick Select
2+
3+
## Definición del problema
4+
5+
Dada una matriz, encontrar el k-ésimo elemento mayor y menor con un una complejidad lineal de Tiempo
6+
7+
## Enfoque
8+
9+
- Selecciona un elemento que sirva de pivote aleatoriamente.
10+
- Aplica particiones como las utilizadas en el algoritmo de ordenamiento rápido o quick sort.
11+
- Después de realizar las particiones, el pivote se deberá colocar en su posición ordenada. Todos los elementos menores que el pivote quedarán a su izquierda y los mayores a su derecha.
12+
- Si el índice del pivote ordenado es k, entonces el pivote está en su k-ésimo elemento y devolveremos el número.
13+
- De otro modo, verifica si 'k' es mayor o menor y selecciona un nuevo pivote en el rango.
14+
- Repite los pasos hasta conseguir el k-ésimo elemento en la k-ésima posición.
15+
16+
## Complejidad de Tiempo
17+
18+
- `O(n^2)` En el peor de los casos
19+
20+
- `O(n)` En el mejor de los casos
21+
22+
- `O(n)` Rendimiento promedio
23+
24+
## Nombre de su fundador
25+
26+
- Este algoritmo fue desarrollado por Tony Hoare. También es conocido como el 'Algoritmo de Selección de Hoare'.
27+
28+
## Ejemplo
29+
30+
```
31+
Matriz[] = {8,2,11,7,9,1,3}
32+
Índices: 0 1 2 3 4 5 6
33+
34+
Digamos que k = 4 y tenemos que encontrar el cuarto elemento menor:
35+
36+
1. Escogiendo un pivote de forma aleatoria, obtenemos 7.
37+
2. Intercambiamos 7 con el último elemento y aplicamos el algoritmo de particionado.
38+
3. Después de aplicar la partición, todos los elementos menores que 7 se colocan a la izquierda y los mayores, a la derecha.
39+
4. Como la posición de '7' es la cuarta, simplemente devolveremos el valor 7.
40+
```
41+
42+
## Enlaces de implementaciones de código
43+
44+
- [C++](https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/selecting/quickSelect.cpp)
45+
- [Python](https://programmerclick.com/article/92711720579/)
46+
47+
## Enlaces de explicación en vídeo
48+
49+
[Programación en C++, Ordenamiento por Selección](https://www.youtube.com/watch?v=HVa2_UtXkCI)

0 commit comments

Comments
 (0)