{"id":50879074,"url":"https://github.com/kauecdev/trabalho-pratico-ordenacao","last_synced_at":"2026-06-15T12:03:48.619Z","repository":{"id":358474162,"uuid":"1236816754","full_name":"kauecdev/trabalho-pratico-ordenacao","owner":"kauecdev","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-17T14:27:58.000Z","size":254,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T16:42:12.046Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kauecdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-12T15:46:28.000Z","updated_at":"2026-05-17T14:28:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kauecdev/trabalho-pratico-ordenacao","commit_stats":null,"previous_names":["kauecdev/trabalho-pratico-ordenacao"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/kauecdev/trabalho-pratico-ordenacao","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Ftrabalho-pratico-ordenacao","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Ftrabalho-pratico-ordenacao/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Ftrabalho-pratico-ordenacao/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Ftrabalho-pratico-ordenacao/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kauecdev","download_url":"https://codeload.github.com/kauecdev/trabalho-pratico-ordenacao/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauecdev%2Ftrabalho-pratico-ordenacao/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34361404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-15T12:03:47.859Z","updated_at":"2026-06-15T12:03:48.612Z","avatar_url":"https://github.com/kauecdev.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Suite de Testes de Algoritmos de Ordenação\n\n## Disciplina: Projeto e Análise de Algoritmos (PAA)\n\nEste projeto implementa uma suite completa de testes para cinco algoritmos clássicos de ordenação, permitindo análise comparativa de desempenho através de uma interface CLI interativa.\n\n## Algoritmos Implementados\n\n- **Bubble Sort**\n- **Insertion Sort**\n- **Merge Sort**\n- **Quick Sort**\n- **Heap Sort**\n- **AOH (Algoritmo de Ordenação Híbrido)**\n\n## Funcionalidades\n\n### Suite de Testes\n- ✅ Testes com três tipos de entrada: Ascendente, Descendente e Aleatória\n- ✅ Testes com tamanhos de array: 100, 1.000, 5.000, 30.000, 50.000, 100.000, 150.000 e 200.000 elementos\n- ✅ Execução tripla de cada teste (calcula média de tempo e comparações)\n- ✅ Contagem de comparações para cada algoritmo\n- ✅ Medição de tempo de execução em milissegundos\n- ✅ Exportação automática de resultados em arquivo CSV\n\n### Interface CLI\n- Menu principal com opções para executar testes separadamente ou todos\n- Submenu para seleção individual de algoritmos\n- Exibição formatada de resultados\n- Opção para voltar ao menu anterior\n\n## Estrutura do Projeto\n\n```\ntrabalho-ordenacao/\n├── main.cpp              # Arquivo principal com interface CLI\n├── bubble_sort.cpp       # Implementação do Bubble Sort\n├── bubble_sort.h         # Cabeçalho do Bubble Sort\n├── insertion_sort.cpp    # Implementação do Insertion Sort\n├── insertion_sort.h      # Cabeçalho do Insertion Sort\n├── merge_sort.cpp        # Implementação do Merge Sort\n├── merge_sort.h          # Cabeçalho do Merge Sort\n├── quick_sort.cpp        # Implementação do Quick Sort\n├── quick_sort.h          # Cabeçalho do Quick Sort\n├── heap_sort.cpp         # Implementação do Heap Sort\n├── heap_sort.h           # Cabeçalho do Heap Sort\n├── aoh.cpp               # Implementação do AOH\n├── aoh.h                 # Cabeçalho do AOH\n└── README.md             # Este arquivo\n```\n\n## Requisitos\n\n- C++ 11 ou superior\n- Compilador g++ (ou clang)\n- Sistema operacional: macOS ou Windows (com MinGW/MSYS2)\n\n## Instruções de Compilação e Execução\n\n### macOS\n\n#### 1. Verificar se o compilador está instalado\n\nAbra o Terminal e execute:\n\n```bash\ng++ --version\n```\n\nSe o g++ não estiver instalado, instale via Xcode:\n\n```bash\nxcode-select --install\n```\n\n#### 2. Compilar o projeto\n\nNavegue até o diretório do projeto:\n\n```bash\ncd /caminho/para/trabalho-ordenacao\n```\n\nExecute o comando de compilação:\n\n```bash\ng++ -O2 -o program main.cpp bubble_sort.cpp insertion_sort.cpp merge_sort.cpp quick_sort.cpp heap_sort.cpp aoh.cpp\n```\n\n#### 3. Executar o programa\n\n```bash\n./program\n```\n\n### Windows\n\n#### 1. Instalar MinGW-w64\n\n- Acesse: https://www.mingw-w64.org/\n- Baixe o instalador (recomenda-se a versão online)\n- Execute o instalador e escolha as configurações padrão\n- Adicione o MinGW ao PATH do sistema (geralmente em `C:\\Program Files\\mingw-w64\\x86_64-...\\bin`)\n\n#### 2. Compilar o projeto\n\nAbra o Prompt de Comando (cmd) ou PowerShell e navegue até o diretório do projeto:\n\n```cmd\ncd C:\\caminho\\para\\trabalho-ordenacao\n```\n\nExecute o comando de compilação:\n\n```cmd\ng++ -O2 -o program.exe main.cpp bubble_sort.cpp insertion_sort.cpp merge_sort.cpp quick_sort.cpp heap_sort.cpp aoh.cpp\n```\n\n#### 3. Executar o programa\n\n```cmd\nprogram.exe\n```\n\nOu simplesmente:\n\n```cmd\nprogram\n```\n\n## Como Usar\n\nAo executar o programa, você verá o menu principal:\n\n```\n==================================================\nSUITE DE TESTES DE ALGORITMOS DE ORDENAÇÃO\n==================================================\n1 - Rodar testes separadamente\n2 - Rodar todos os testes\n3 - Encerrar programa\n==================================================\nSua escolha:\n```\n\n### Opção 1: Rodar testes separadamente\n\nSelecione `1` e o seguinte submenu aparecerá:\n\n```\n==================================================\nSELECIONE O ALGORITMO\n==================================================\n1 - Bubble Sort\n2 - Insertion Sort\n3 - Merge Sort\n4 - Quick Sort\n5 - Heap Sort\n6 - AOH (Quick + Insertion)\n7 - Voltar\n==================================================\nSua escolha:\n```\n\nEscolha um algoritmo (1-5) ou `6` para voltar ao menu principal. O algoritmo será testado com as três variações de entrada em todos os tamanhos configurados.\n\n### Opção 2: Rodar todos os testes\n\nSelecione `2` e todos os cinco algoritmos serão testados automaticamente com todas as três variações de entrada (Ascendente, Descendente e Aleatória) em todos os tamanhos configurados.\n\n### Opção 3: Encerrar\n\nSelecione `3` para sair do programa.\n\n## Saída do Programa\n\nPara cada teste executado, o programa exibirá:\n\n```\n  Executando Bubble Sort com vetor ASC...\n\n  Algoritmo: Bubble Sort\n  Tipo de Input: ASC\n  Tamanho do vetor: 100\n  Número de comparações: 4950\n  Tempo médio: 0.0100 ms\n```\n\nOnde:\n- **Algoritmo**: Nome do algoritmo de ordenação\n- **Tipo de Input**: Tipo de entrada (ASC = Ascendente, DESC = Descendente, RAND = Aleatória)\n- **Tamanho do vetor**: Quantidade de elementos do array testado\n- **Número de comparações**: Média de comparações realizadas em 3 execuções\n- **Tempo médio**: Tempo médio de execução em milissegundos\n\n## Exportação de Resultados em CSV\n\nO programa gera automaticamente um arquivo CSV com os resultados dos testes ao final da execução:\n\n### Ao rodar todos os testes\nCria um arquivo chamado **`resultados_testes.csv`** contendo os dados de todos os 120 testes (5 algoritmos × 3 tipos de entrada × 8 tamanhos).\n\n### Ao rodar testes individuais\nCria um arquivo chamado **`resultados_[Nome_do_Algoritmo].csv`** contendo os 24 testes daquele algoritmo (3 tipos de entrada × 8 tamanhos).\n\n### Formato do CSV\n\nO arquivo possui as seguintes colunas:\n- **Algoritmo**: Nome do algoritmo de ordenação\n- **Tipo de Vetor**: Tipo de entrada (ASC, DESC, RAND)\n- **Tamanho do Vetor**: Tamanho do array testado\n- **Número de Comparações**: Quantidade média de comparações\n- **Tempo Médio (ms)**: Tempo médio de execução em milissegundos\n\nExemplo de saída:\n```\nAlgoritmo,Tipo de Vetor,Tamanho do Vetor,Número de Comparações,Tempo Médio (ms)\nBubble Sort,ASC,100,4950,0.0100\nBubble Sort,DESC,100,4950,0.0200\nBubble Sort,RAND,100,4950,0.0150\nBubble Sort,ASC,1000,499500,0.9500\n...\n```\n\nOs arquivos CSV podem ser abertos em qualquer editor de texto ou planilha eletrônica (Excel, LibreOffice Calc, Google Sheets, etc.) para análise mais detalhada dos resultados.\n\n## Detalhes Técnicos\n\n### Geração de Dados\n\n- **Ascendente**: Array de 1 até o tamanho configurado em ordem crescente\n- **Descendente**: Array do tamanho configurado até 1 em ordem decrescente\n- **Aleatória**: Array com valores aleatórios entre 1 e 10 vezes o tamanho configurado\n\n### Medições\n\n- Cada teste é executado **3 vezes**\n- O número de comparações é **a média das 3 execuções**\n- O tempo é medido usando `chrono::high_resolution_clock` do C++ padrão\n\n## Notas Importantes\n\n1. Os algoritmos modificam o array original (ordenação in-place ou com cópia)\n2. O gerador de números aleatórios é inicializado com a hora do sistema\n3. Os tempos podem variar ligeiramente entre execuções\n\n## Autor\n\nProjeto desenvolvido para a disciplina de Projeto e Análise de Algoritmos (PAA)\n\n## Licença\n\nEste projeto é fornecido como material educacional.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauecdev%2Ftrabalho-pratico-ordenacao","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkauecdev%2Ftrabalho-pratico-ordenacao","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauecdev%2Ftrabalho-pratico-ordenacao/lists"}