Este projeto implementa, compara e analisa a performance de diferentes algoritmos de ordenação, utilizando o padrão de projeto Strategy para modularidade e OpenTelemetry para coleta de métricas e logs.
- Bubble Sort
- Bubble Sort Melhorado
- Insertion Sort
- Selection Sort
- Quick Sort
- Merge Sort
- Tim Sort
Certifique-se de ter instalado:
- Python 3.8 ou superior
- Gerenciador de pacotes
pip
- Clone o repositório:
git clone <URL_DO_REPOSITORIO>
cd <NOME_DO_REPOSITORIO>
- Instale as dependências:
pip install -r requirements.txt
Execute o script gerador_dados.py
para criar conjuntos de números aleatórios:
python gerador_dados.py
Execute o script main.py
para rodar os algoritmos e coletar métricas de desempenho:
python main.py
O que acontece durante a execução:
- Os algoritmos são aplicados a cada conjunto de dados.
- Métricas como tempo de execução, número de comparações e trocas são coletadas.
- Logs são gerados utilizando o OpenTelemetry.
Os logs são exibidos no console e podem ser enviados para o Jaeger para análise.
Inicie o Jaeger com Docker:
docker run -d --name jaeger -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 9411:9411 jaegertracing/all-in-one:1.21
Acesse o Jaeger no navegador:
Procure pelos traces gerados pelo projeto.
Após a execução, os resultados incluem:
- Tempo de execução (em milissegundos)
- Número de comparações realizadas
- Número de trocas/movimentações realizadas
Os resultados são exibidos no console e registrados no Jaeger para análise detalhada.