Projeto desenvolvido para a disciplina de Pesquisa e Ordenação — quinta disciplina de Algoritmos do curso de Sistemas de Informação.
O objetivo é implementar os principais algoritmos de ordenação em duas estruturas distintas: Lista Encadeada e Arquivo Binário, coletando métricas de desempenho (comparações, movimentações e tempo de execução) para cada cenário.
├── PDF/ # Enunciados e documentos da disciplina
└── src/main/java/org/example/
├── arquivo/ # Implementações sobre Arquivo Binário + Main do projeto
├── lista/
│ ├── duplamenteEncadeada/
│ ├── simplesmenteEncadeada/
│ └── estruturas/
│ ├── fila/
│ └── pilha/
└── ordenacaoLista/ # Algoritmos de ordenação sobre Lista Encadeada
├── bolha/
├── bucket/
├── comb/
├── counting/
├── gnome/
├── heap/
├── insercao/
│ ├── binaria/
│ └── direta/
├── merge/
├── quick/
├── radix/
├── selecaoDireta/
├── shell/
└── tim/
| Algoritmo | Lista Encadeada | Arquivo Binário |
|---|---|---|
| Inserção Direta | ✅ | ✅ |
| Inserção Binária | ✅ | ✅ |
| Seleção Direta | ✅ | ✅ |
| Bolha (Bubble Sort) | ✅ | ✅ |
| Shake Sort | ✅ | ✅ |
| Shell Sort | ✅ | ✅ |
| Heap Sort | ✅ | ✅ |
| Quick Sort (s/ pivô) | ✅ | ✅ |
| Quick Sort (c/ pivô) | ✅ | ✅ |
| Merge Sort (1ª impl) | ✅ | ✅ |
| Merge Sort (2ª impl) | ✅ | ✅ |
| Algoritmo | Lista Encadeada | Arquivo Binário |
|---|---|---|
| Counting Sort | ✅ | ✅ |
| Bucket Sort | ✅ | ✅ |
| Radix Sort | ✅ | ✅ |
| Comb Sort | ✅ | ✅ |
| Gnome Sort | ✅ | ✅ |
| Tim Sort | ✅ | ✅ |
Cada algoritmo registra as seguintes métricas durante a ordenação:
- Comparações progressivas (
Comp. Prog.) — comparações que avançam o processo - Comparações de igualdade (
Comp. Equa.) — comparações entre elementos iguais - Movimentações progressivas (
Mov. Prog.) — trocas que alteram a ordem - Movimentações de igualdade (
Mov. Equa.) — movimentações sem alteração de posição relativa - Tempo de execução — medido em milissegundos
Os arquivos binários são testados em três situações:
| Cenário | Descrição |
|---|---|
| Arquivo Ordenado | Dados já em ordem crescente |
| Ordem Reversa | Dados em ordem decrescente |
| Arquivo Randômico | Dados em ordem aleatória |
Os arquivos devem conter no mínimo 1024 registros.
- Linguagem: Java
- Build: Maven
- IDE recomendada: IntelliJ IDEA / Eclipse