Instruções
Implementar o Algoritmo Quicksort
Neste laboratório você implementará o algoritmo de ordenação: quicksort.
Quicksort é uma abordagem eficiente, recursiva e de dividir para conquistar para ordenar um array. Neste método, um valor pivô é escolhido no array original. O array é então particionado em dois subarrays de valores menores e maiores que o valor pivô. Em seguida, o resultado da chamada recursiva do algoritmo quicksort em ambos os subarrays é combinado. Isso continua até que o caso base de um array vazio ou com um único item seja alcançado, que é retornado. O desenrolar das chamadas recursivas devolve o array ordenado.
Embora a escolha do valor pivô seja importante, qualquer pivô servirá para os nossos propósitos aqui. Para simplificar, podemos usar o primeiro ou o último elemento.
Quicksort is a very efficient sorting method, providing *O(nlog(n))* performance on average. Ele também é relativamente fácil de implementar. Estes atributos fazem dele um método de ordenação popular e útil.
Objetivo: Cumprir as user stories abaixo e fazer todos os testes passarem para completar o laboratório.
Histórias de Usuário:
1. Você deve ter uma função
quicksort que recebe um array de inteiros como entrada.
1. A função quicksort deve retornar um array que contenha os mesmos inteiros da entrada, mas em ordem do menor para o maior.
1. A função quicksort deve chamar a si mesma recursivamente para ordenar o array.
O que fazer:
Testes:
- Você deve ter uma função `quicksort`.
- `quicksort([1, 4, 2, 8, 345, 123, 43, 32, 5643, 63, 123, 43, 2, 55, 1, 234, 92])` deve retornar um array que não foi alterado exceto pela ordem.
- `quicksort` deve retornar um array ordenado (do menor para o maior).
- `quicksort` não deve usar o método `.sort()` embutido.
Preview