Projeto em Java para comparar a eficiência de busca e ordenação em ArrayList e consultas SQL, analisando ciclos.
Nosso Objetivo | Stack | Colaboradores | Contato
Ferramentas:
Detalhes:
Comparar a quantidade de ciclos necessários para buscar ou ordenar por determinado jogo, comparando metodos como buscas linear e binary, e ordenações em bubble ou quick
Busca
- Pesquisar um jogo pelo nome, completo ou parcial
- Escolher método de busca: Linear ou Binary
Ordenação
- Ordenar lista por categoria (ID, Nome, Categoria, Data de Lançamento)
- Escolher método de ordenação: Bubble Sort ou Quick Sort
Comparação
- Metodos são analisados contra SQL Queries
- Resultado de cada método é exibido em ciclos de repetição
- O código-fonte foi devidamente comentado usando o padrão JavaDoc para facilitar a compreensão das funcionalidades e métodos.
- A documentação do projeto que mostra o planejamento e funcionalidades e plano de desenvolvimento se encontram aqui
- Os pré-requisitos do projeto tal como requisitados pela instituição se encontram Pré-Requisitos: aqui
| Camada | Ferramentas |
|---|---|
| Front-End | JavaFX, Scene Builder |
| Back-End | Java JDK 8 |
| Data | MySQL, MySQL Connector J 8.4.0 |
| Ambiente | Apache NetBeans IDE 16, XAMPP |
BubbleSort
O bubble sort (ou ordenação por flutuação) é um algoritmo simples de ordenação que funciona comparando repetidamente pares de elementos adjacentes em uma lista e trocando suas posições quando estão na ordem errada. Esse processo é realizado em múltiplas passadas pela lista.
Exemplo:
Dada uma lista 4,1,3,2, segue um exemplo de Bubble Sort:
| Passo | Par | Comparação | Ação | Nova lista |
|---|---|---|---|---|
| 1 | (4,1) | 4 > 1 | troca | [1, 4, 3, 2] |
| 2 | (4,3) | 4 > 3 | troca | [1, 3, 4, 2] |
| 3 | (4,2) | 4 > 2 | troca | [1, 3, 2, 4] |
| 4 | (1,3) | 1 < 3 | mantém | [1, 3, 2, 4] |
| 5 | (3,2) | 3 > 2 | troca | [1, 2, 3, 4] |
Complexidade:
Pior caso (lista inversa): O(n²) comparações e trocas. Melhor caso (já ordenada): O(n) com otimização (interrompe se nenhuma troca ocorrer).
QuickSort
O QuickSort (ou ordenação rápida) é um algoritmo de ordenação que utiliza a estratégia "dividir para conquistar". Ele funciona escolhendo um elemento chamado pivô e reorganizando a lista de forma que todos os elementos menores que o pivô fiquem à sua esquerda, e os maiores à sua direita. Esse processo é aplicado recursivamente às sublistas esquerda e direita.
Exemplo:
Dada uma lista 7, 9, 6, 5, 8, segue um exemplo de QuickSort (pivô = último elemento):
| Etapa | Sublistas | Pivô | Particionamento (menores, pivô, maiores) | Resultado |
|---|---|---|---|---|
| 1 | [7, 9, 6, 5, 8] | 8 | [7, 6, 5] , 8 , [9] | [7, 6, 5, 8, 9] |
| 2 | [7, 6, 5] | 5 | [] , 5 , [7, 6] | [5, 7, 6, 8, 9] |
| 3 | [7, 6] | 6 | [] , 6 , [7] | [5, 6, 7, 8, 9] |
| 4 | [7] | 7 | [] , 7 , [] | [5, 6, 7, 8, 9] |
Complexidade:
Melhor caso (pivô divide a lista ao meio): O(n log n)
Pior caso (pivô é sempre o menor ou maior elemento): O(n²)
Linear Search
A Busca Linear percorre cada elemento da lista sequencialmente até encontrar o valor desejado ou chegar ao final.
Exemplo:
Procurando o valor 6 na lista [7, 9, 6, 5, 8] :
| índice | Valor |
|---|---|
| 0 | 7 |
| 1 | 9 |
| 2 | 6 |
| 3 | 5 |
| 4 | 8 |
O passo a passo seria assim:
| Passo | Índice | Elemento | Comparação | Resultado |
|---|---|---|---|---|
| 1 | 0 | 7 | 7 == 6? | ❌ não |
| 2 | 1 | 9 | 9 == 6? | ❌ não |
| 3 | 2 | 6 | 6 == 6? | ✅ encontrado |
Note que, caso seja realizada uma
Complexidade:
Melhor caso (Elemento no início da lista): O(1) Pior caso (Elemento no final ou ausente): O(n)
Binary Search
A Busca Binária localiza um elemento em uma lista ordenada reduzindo pela metade o intervalo de busca a cada iteração.
Exemplo:
Procurando o valor 14 na lista [11, 12, 13, 14, 15, 16] :
| Índice | 0 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|---|
| Valor | 11 | 12 | 13 | 14 | 15 | 16 |
Visualização do intervalo de busca:
| Passo | Intervalo ativo | Meio | Comparação | Novo intervalo |
|---|---|---|---|---|
| 1 | [11, 12, 13, 14, 15, 16] | 13 | 13 < 14 | [14, 15, 16] |
| 2 | [14, 15, 16] | 15 | 15 > 14 | [14] |
| 3 | [14] | 14 | 14 == 14 | ✅ encontrado |
Importante:
A Busca Binária exige que a lista esteja ordenada previamente. Caso contrário, o algoritmo não funciona corretamente.
Complexidade:
Melhor caso (Elemento exatamente no meio): O(1)
Pior caso (Elemento em qualquer posição ou ausente): O(log n)
# 1. Baixe o projeto ou faça um clone do repositório
git clone <url-do-repositorio>
# 2. Abra a pasta "Project - A3" na sua IDE de preferência (recomendamos o NetBeans)
cd "Project - A3"
# 3. Certifique-se de que o arquivo "games.csv" está presente no diretório de execução na pasta "data"
ls data/games.csv
# 4. Compile e execute o projeto na IDE
# No NetBeans: Clique em "Run Project" (F6)
# Ou via linha de comando (se for um projeto Java):
javac src/*.java
java -cp src Main
# 5. O software abrirá diretamente na tela do usuário, permitindo interagir com as funcionalidades disponíveis
echo "Software em execução - aguardando interação do usuário"| Lucas Silva | Nycolas Garcia | Danilo Santos | Breno Melo | Gustavo Henrique |
|---|---|---|---|---|