Como posso fazer um loop em um array muito grande e ainda conseguir mover elementos para o final do array sem quebrar o loop?
No loop estou consumindo os elementos, mas alguns deles dependem de outros, e esses eu quero mover no final. Eventualmente todos os elementos serão consumidos, então o loop não será infinito.
Eu sei que a maneira mais fácil é usar apenas uma matriz secundária e não alterar a matriz original no loop, mas os dados são muito grandes e seria muito lento
Você pode usar o método " Two-Pointer " para isso em JavaScript. A ideia-chave é iterar sobre o array e fazer o seguinte:
Mover elementos específicos para o último
Sem quebrar o loop ou criar uma nova matriz
Um código para essa finalidade pode ser o seguinte:
Saída:
Vantagens:
Complexidade de tempo : O(N) onde N é o número de elementos na matriz
Complexidade do espaço : O(1) porque nenhum espaço adicional é usado
Você pode modificar a matriz no local usando um único loop e um ponteiro de índice (i):
Se um elemento precisar ser movido, remova-o usando splice() e empurre-o para o final com push().
Não incremente i neste caso, pois o próximo elemento muda para o mesmo índice.
Se o elemento for processado normalmente, incremente i.