Algoritmos e Estruturas de Dados em PHP: Guia Prático

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Algoritmos e Estruturas de Dados em PHP: na prática

\n\n

No mundo do desenvolvimento web, o PHP continua sendo uma das linguagens mais populares. No entanto, muitos desenvolvedores familiarizados com a sintaxe frequentemente negligenciam conceitos fundamentais — algoritmos e estruturas de dados. Compreender esses tópicos não só melhora a qualidade do código, mas também torna você um profissional mais competitivo em entrevistas. Neste artigo, abordaremos os principais algoritmos e estruturas de dados em PHP com exemplos de código reais que você pode aplicar imediatamente em seus projetos.

\n\n

1. Estruturas de dados básicas: pilha e fila

\n\n

Pilha e fila são estruturas de dados lineares frequentemente usadas em aplicações reais. A pilha funciona pelo princípio LIFO (Last In, First Out), enquanto a fila opera como FIFO (First In, First Out). Em PHP, elas podem ser implementadas usando funções internas de array.

\n\n

Implementação da pilha

\n
<?php\nclass Stack {\n    private $stack = [];\n\n    public function push($item) {\n        array_push($this->stack, $item);\n    }\n\n    public function pop() {\n        if ($this->isEmpty()) {\n            return null;\n        }\n        return array_pop($this->stack);\n    }\n\n    public function peek() {\n        return end($this->stack);\n    }\n\n    public function isEmpty() {\n        return empty($this->stack);\n    }\n}\n\n// Exemplo de uso\n$stack = new Stack();\n$stack->push("Primeiro");\n$stack->push("Segundo");\n$stack->push("Terceiro");\necho $stack->pop(); // Terceiro\necho $stack->peek(); // Segundo\n?>
\n\n

Implementação da fila

\n
<?php\nclass Queue {\n    private $queue = [];\n\n    public function enqueue($item) {\n        array_push($this->queue, $item);\n    }\n\n    public function dequeue() {\n        if ($this->isEmpty()) {\n            return null;\n        }\n        return array_shift($this->queue);\n    }\n\n    public function front() {\n        return reset($this->queue);\n    }\n\n    public function isEmpty() {\n        return empty($this->queue);\n    }\n}\n\n// Exemplo de uso\n$queue = new Queue();\n$queue->enqueue("Primeiro");\n$queue->enqueue("Segundo");\n$queue->enqueue("Terceiro");\necho $queue->dequeue(); // Primeiro\necho $queue->front();    // Segundo\n?>
\n\n

Essas estruturas de dados são indispensáveis na implementação de buffers, histórico de ações (undo/redo) e processamento de tarefas na ordem de chegada.

\n\n

2. Algoritmos de ordenação em PHP

\n\n

Ordenação é uma das operações mais comuns na programação. Vamos analisar duas implementações clássicas: bubble sort (para aprendizado) e quick sort (para uso real).

\n\n

Bubble Sort

\n
<?php\nfunction bubbleSort(&$arr) {\n    $n = count($arr);\n    for ($i = 0; $i < $n - 1; $i++) {\n        for ($j = 0; $j < $n - $i - 1; $j++) {\n            if ($arr[$j] > $arr[$j + 1]) {\n                // Troca de valores\n                $temp = $arr[$j];\n                $arr[$j] = $arr[$j + 1];\n                $arr[$j + 1] = $temp;\n            }\n        }\n    }\n}\n\n$numbers = [64, 34, 25, 12, 22, 11, 90];\nbubbleSort($numbers);\nprint_r($numbers); // [11, 12, 22, 25, 34, 64, 90]\n?>
\n\n

Complexidade: O(n²) — não é adequado para arrays grandes, mas demonstra bem o princípio.

\n\n

Quick Sort

\n
<?php\nfunction quickSort($arr) {\n    if (count($arr) < 2) {\n        return $arr;\n    }\n\n    $pivot = $arr[0];\n    $left = $right = [];\n\n    for ($i = 1; $i < count($arr); $i++) {\n        if ($arr[$i] < $pivot) {\n            $left[] = $arr[$i];\n        } else {\n            $right[] = $arr[$i];\n        }\n    }\n\n    return array_merge(quickSort($left), [$pivot], quickSort($right));\n}\n\n$numbers = [3, 6, 8, 10, 1, 2, 1];\n$sorted = quickSort($numbers);\nprint_r($sorted); // [1, 1, 2, 3, 6, 8, 10]\n?>                

Blogs

Book Recommendations