1
resposta

Minha implementação do QuickSort

E aí pessoas, blz? Eu havia tentado fazer uma implementação do quickSort antes e tinha ficado horrível kkk. Depois de assistir a aula sobre o MergeSort tive uma ideia de como fazer a implementação do QuickSort com base no código do MergeSort, achei bem legal:

function QuickSort(list) {
    let pivot = list.length-1
    let part1 = []
    let part2 = []

    for (let i = 0; i < list.length-1; i++) {
        if(list[i]< list[pivot]) {
            part1.push(list[i])
        } else {
            part2.push(list[i])
        }
    }

    if (part1.length > 1) {
        part1 = QuickSort(part1)
    } 

    if (part2.length > 1) {
        part2 = QuickSort(part2)
    }

    return part1.concat(list[pivot]).concat(part2)
}
1 resposta

Olá Samuel, tudo bem?

Desde já peço desculpa pela demora para responder o seu tópico.

Parabéns por tentar implementar o QuickSort, é uma ótima forma de aprender algoritmos de ordenação. Sua implementação está bem interessante e segue a lógica do QuickSort, dividindo a lista em duas partes e ordenando recursivamente cada uma delas. No entanto, é importante lembrar que o QuickSort tem uma lógica um pouco diferente do MergeSort, então é necessário ter cuidado ao adaptar um código para o outro.

Uma sugestão de melhoria seria escolher um pivô aleatório ao invés de sempre escolher o último elemento da lista, para evitar casos em que a lista já esteja quase ordenada e o algoritmo fique muito lento. Outra sugestão seria adicionar um caso base para listas com tamanho 1 ou 0, para evitar que a recursão entre em loop infinito.

Enfim, gostei da sua iniciativa, espero que continue assim, explorando cada vez mais, tenho certeza que dessa forma você conquistará o futuro que você quiser.

Caso durante os estudos você tenha dúvidas ou problemas, recorra ao fórum, estamos aqui para ajudá-lo.

Abraços e bons estudo!