Algoritmos y estructuras de datos en PHP: desde lo básico hasta la implementación

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course
```html

Algoritmos y estructuras de datos en PHP: desde lo básico hasta la implementación



En el desarrollo web moderno, el conocimiento de algoritmos y estructuras de datos no es solo una habilidad académica, sino una herramienta práctica para crear aplicaciones rápidas, escalables y confiables. PHP, a pesar de su reputación como "lenguaje para sitios simples", proporciona todos los medios necesarios para implementar tareas computacionales complejas. En este artículo, analizaremos las estructuras de datos y algoritmos clave y, lo más importante, mostraremos cómo implementarlos en PHP puro con ejemplos de código.



1. Estructuras de datos fundamentales en PHP



En PHP, los tipos integrados (arrays, objetos) ya cubren muchas necesidades, pero para una comprensión profunda y optimización, vale la pena implementar las estructuras clásicas manualmente.



1.1. Pila (Stack)

La pila funciona bajo el principio LIFO (Last In, First Out). Se utiliza para deshacer acciones (undo), analizar paréntesis y recorrer grafos en profundidad.

<?phpclass Stack {    private array $items = [];

public function push($item): void { array_push($this->items, $item); }

public function pop() { if ($this->isEmpty()) { throw new UnderflowException('Stack is empty'); } return array_pop($this->items); }

public function peek() { return end($this->items); }

public function isEmpty(): bool { return empty($this->items); }

public function size(): int { return count($this->items); }}

// Ejemplo: verificación de paréntesis balanceadosfunction isBalanced(string $expression): bool { $stack = new Stack(); $pairs = ['(' => ')', '{' => '}', '[' => ']'];

for ($i = 0; $i < strlen($expression); $i++) { $char = $expression[$i]; if (isset($pairs[$char])) { $stack->push($char); } elseif (in_array($char, $pairs)) { if ($stack->isEmpty() || $pairs[$stack->pop()] !== $char) { return false; } } } return $stack->isEmpty();}

echo isBalanced("({[]})") ? "Balanceado" : "No balanceado"; // Balanceado?>


1.2. Cola (Queue)

La cola funciona bajo el principio FIFO (First In, First Out). Se aplica en sistemas de colas de tareas, BFS (recorrido en anchura) y almacenamiento en búfer de datos.

<?phpclass Queue {    private array $items = [];

public function enqueue($item): void { $this->items[] = $item; }

public function dequeue() { if ($this->isEmpty()) { throw new UnderflowException('Queue is empty'); } return array_shift($this->items); }

public function peek() { return $this->items[0] ?? null; }

public function isEmpty(): bool { return empty($this->items); }

public function size(): int { return count($this->items); }}

// Ejemplo: simulación de cola de impresión$printQueue = new Queue();$printQueue->enqueue("document1.pdf");$printQueue->enqueue("photo.jpg");$printQueue->enqueue("report.docx");

while (!$printQueue->isEmpty()) { echo "Imprimiendo: " . $printQueue->dequeue() . "";}?>


1.3. Árbol binario de búsqueda (BST)

El árbol proporciona búsqueda, inserción y eliminación rápidas de elementos (O(log n) en promedio).

<?phpclass TreeNode {    public $value;    public ?TreeNode $left = null;    public ?TreeNode $right = null;

public function __construct($value) { $this->value = $value; }}

class BinarySearchTree { public ?TreeNode $root = null;

public function insert($value): void { $this->root = $this->insertNode($this->root, $value); }

private function insertNode(?TreeNode $node, $value): TreeNode { if ($node === null) ```

Blogs

Book Recommendations