Modelo por capas
Seis patrones
La mayoría de las estructuras equivocadas en código generado (y humano) caen en estos patrones:
| Patrón | Qué cuesta | Qué correspondía |
|---|---|---|
contiene sobre un array dentro de un bucle |
O(n²) | un conjunto hash: O(n) esperado |
borrar(0) repetido sobre un array |
O(n²) para vaciarlo | una cola (buffer circular) |
| ordenar en cada iteración para sacar el mínimo | O(n² log n) | un heap |
| tabla hash para consultas por rango | O(n) por rango | un árbol ordenado o un array ordenado |
| lista enlazada para recorrer o acceder por posición | lenta por la caché, O(i) por posición | un array |
| concatenar texto en un bucle, en lenguajes donde el texto no se modifica y cada suma copia todo | O(n²) | acumular en un array dinámico y unir al final |
Así se ve el bucle escondido del primer patrón:
Leer código con esta tabla es buscar el bucle que esconde otro bucle: una operación que parece de una línea pero recorre o copia todo.