Skip to content

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Benchmark de Algoritmos

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:

Java CSS3 MySQL

Detalhes:

Version Stars Repo Views Languages Count Top Language

Nosso Objetivo

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

Funcionalidades

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

Documentaçã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

Stack

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

Algoritmos de Ordenação (Sort)

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²)

Algoritmos de Busca (Search)

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)

Instalação e Uso

# 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"

Contato

Colaboradores

Lucas Silva Nycolas Garcia Danilo Santos Breno Melo Gustavo Henrique
LinkedIn LinkedIn LinkedIn LinkedIn LinkedIn

Desenvolvido por Lucas Lopes da Silva ☕

About

Projeto em Java para comparar a eficiência de busca e ordenação de jogos entre uma ArrayList e consultas SQL, analisando ciclos.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages