Sort
function ordenarSteps(arr) { // Criar um mapa para fácil acesso aos objetos por stepId const stepMap = new Map(arr.map(step => [step.stepId, step])); // Calcular o grau de entrada (quantos steps apontam para ele) const inDegree = new Map(arr.map(step => [step.stepId, 0])); arr.forEach(step => step.nextIds.forEach(id => inDegree.set(id, (inDegree.get(id) || 0) + 1))); // Filtrar os steps que não possuem steps anteriores (grau de entrada 0) const queue = [...arr.filter(step => inDegree.get(step.stepId) === 0)]; const ordered = []; // Ordenação baseada em Kahn's Algorithm (Algoritmo de Ordenação Topológica) while (queue.length > 0) { const current = queue.shift(); ordered.push(current); current.nextIds.forEach(id => { inDegree.set(id, inDegree.get(id) - 1); if (inDegree.get(id) === 0) { ...