Olá, Ana! Como vai?
A sua observação é muito perspicaz! No algoritmo QuickSort, a recursão é controlada pelas condições dentro do loop while
e pelos if
que estão fora dele. O loop while
é responsável por mover os elementos menores que o pivô para a esquerda e os maiores para a direita. Quando os índices atualEsquerda
e atualDireita
se cruzam, o loop while
é encerrado.
Em seguida, temos dois if
que são responsáveis por fazer a chamada recursiva do QuickSort para a parte esquerda e direita do array. O primeiro if (esquerda < indiceAtual - 1)
verifica se ainda há elementos à esquerda do pivô para serem ordenados. Se houver, ele faz uma chamada recursiva para essa parte do array. O segundo if (indiceAtual < direita)
faz o mesmo, mas para os elementos à direita do pivô.
Se nenhuma dessas condições for atendida, significa que o array já está ordenado e a recursão é encerrada. Portanto, o controle da recursão é feito por essas condições, e não por um if
explícito para finalizar a recursão.
Sobre o seu teste com o console.log
dentro de um else
, ele não é executado porque as condições dos ifs
sempre serão atendidas até que o array esteja completamente ordenado. Ou seja, sempre haverá elementos à esquerda ou à direita do pivô para serem ordenados até que o array esteja completamente ordenado.
Espero que essa explicação tenha esclarecido a sua dúvida! Continue com essa curiosidade e dedicação nos estudos, isso é muito importante para o aprendizado! Espero ter ajudado e bons estudos!