Você está na página 1de 5

Trabalho final

Foram testados os algoritmos de ordenação em arrays de aleatórios dos seguintes tamanhos:


500 números
1.000 número
2.000 números
3.000 números
5.000 números
10.000 números
50.000 números
100.000 números
500.00 números
1.000.000 números
5.000.000 números
10.000.000 números

Utilizamos dois computadores diferentes para processar. Nota-se que foram utilizados os
mesmos códigos e os mesmos bancos de teste, a única diferença são as especificações das
máquinas.

Máquina 1
i3 de 11°
20GB de RAM
216GB de SSG
Máquina 2
AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz
8GB de RAM
512 SSD
Quick Sort
Complexidade de Tempo:
Melhor caso: O(n log n)
Caso médio: O(n log n)
Pior caso: O(n²)

Complexidade de Espaço:
Geralmente O(log n) devido ao uso da pilha de chamadas de recursão.

Características:
Baseado na divisão e conquista.
Escolhe um 'pivô' e participa do array em torno dele.
Não estável (a ordem de elementos iguais pode ser alterada).
Muito eficiente para grandes conjuntos de dados.
A escolha do pivô pode afetar drasticamente o desempenho.
Merge Sort
Complexidade de Tempo:
Melhor caso: O(n log n)
Caso médio: O(n log n)
Pior caso: O(n log n)

Complexidade de Espaço:
O(n), pois requer espaço adicional para a matriz temporária.

Características:
Também baseado na divisão e conquista.
Divide o array em duas metades, ordena-as e depois as funde.
Estável (mantém a ordem de elementos iguais).
Sempre tem o mesmo desempenho, independentemente da ordenação inicial dos dados.
Usa mais memória que o Quick Sort.

Shell Sort
Complexidade de Tempo:
Melhor caso: varia dependendo da sequência de lacunas, mas pode ser tão baixo quanto O(n
log n).
Caso médio: depende da sequência de lacunas; geralmente pior que O(n log n) mas melhor
que O(n²).
Pior caso: O(n²) (dependendo da sequência de lacunas).

Complexidade de Espaço:
O(1), é um algoritmo de ordenação no local.

Características:
Melhoria do Insertion Sort.
Usa um conceito de 'lacunas' para comparar elementos distantes, em seguida, reduz
gradualmente a lacuna e refina a ordenação.
Não estável.
Menos eficiente que o Quick Sort e o Merge Sort para conjuntos de dados muito grandes.
Mais fácil de implementar do que os outros dois e requer menos memória.

De forma geral
Eficiência: Merge Sort e Quick Sort são geralmente mais eficientes que o Shell Sort,
especialmente para conjuntos de dados grandes.
Uso de Memória: Shell Sort e Quick Sort são mais eficientes em termos de memória do que o
Merge Sort.

Estabilidade: Merge Sort é o único que é estável entre os três.


Complexidade de Implementação: Shell Sort é mais simples de implementar em comparação
com os outros dois.

Você também pode gostar