Você está na página 1de 2

Curso: Bacharelado em Computação

Disciplina: Estrutura de Dados

Professora: Janderson Jason Barbosa Aguiar

Equipe: Andrey Dantas, Jonathas Candeia, Weverton Lima

Algoritmos de Ordenação
Este relatório apresenta uma análise detalhada de diversos algoritmos de
ordenação, destacando suas implementações e desempenhos. Como parte de
nosso estudo em Estruturas de Dados, exploramos os seguintes algoritmos:

● Bubble Sort
● Selection Sort
● Insertion Sort
● Merge Sort
● Quick Sort
● Quick Sort com pivô aleatório
● Método de ordenação do Java (Arrays.sort())
● Counting Sort

O objetivo principal deste trabalho é compreender as características,


vantagens e desvantagens de cada algoritmo, bem como analisar o comportamento
deles em diferentes conjuntos de dados. Ao final desta análise, esperamos ter uma
visão abrangente das complexidades de tempo e espaço desses algoritmos, o que
nos permitirá tomar decisões informadas ao escolher o algoritmo mais apropriado
para diferentes cenários de ordenação.

Para analisar o desempenho dos algoritmos de ordenação, foram considerados os


seguintes pontos:

● Tamanhos do Vetor: 5000 / 10000 / 15000


● Casos de Ordenação: Elementos ordenados crescentemente; Elementos
ordenados decrescentemente; Elementos de forma aleatória.
● Execuções: 50 execuções para cada tipo de vetor.
● Tempo: em nanosegundos.

Análise Assintótica dos Algoritmos de Ordenação:

A análise de complexidade assintótica é importante para avaliar o


desempenho dos algoritmos em relação ao tamanho dos dados. Os algoritmos
implementados têm as seguintes análises assintóticas:

Bubble Sort
● Melhor Caso: O(n)
● Caso Médio: O(n^2)
● Pior Caso: O(n^2)

Selection Sort
● Melhor Caso: O(n^2)
● Caso Médio: O(n^2)
● Pior Caso: O(n^2)

Insertion Sort
● Melhor Caso: O(n)
● Caso Médio: O(n^2)
● Pior Caso: O(n^2)

Merge Sort
● Melhor Caso: O(n log n)
● Caso Médio: O(n log n)
● Pior Caso: O(n log n)

Quick Sort
● Melhor Caso: O(n log n)
● Caso Médio: O(n log n)
● Pior Caso: O(n^2)

Quick Sort com Pivô Aleatório


● Melhor Caso: O(n log n)
● Caso Médio: O(n log n)
● Pior Caso: O(n^2)

Algoritmo Padrão do Java (Arrays.sort())


● Melhor Caso: O(n log n)
● Caso Médio: O(n log n)
● Pior Caso: O(n log n)

Counting Sort
● Melhor Caso: O(n + k) (onde k é o intervalo de valores)
● Caso Médio: O(n + k)
● Pior Caso: O(n + k)

Com essas análises assintóticas, podemos compreender melhor o


comportamento teórico de cada algoritmo de ordenação em diferentes cenários e
tomar decisões informadas sobre quando usar um algoritmo específico com base
nos requisitos de desempenho e no tipo de dados a serem classificados.

Resultados dos Testes de Desempenho:


Nesta seção, apresentaremos os resultados dos testes de desempenho
realizados em cada um dos algoritmos de ordenação estudados. Os testes foram
executados em três tipos diferentes de vetores: vetores ordenados crescentemente,
vetores ordenados decrescentemente e vetores com elementos aleatórios. Usando
tamanhos de vetores de 5 mil, 10 mil e 15 mil elementos. Cada teste foi repetido 50
vezes para obter uma média de tempo de execução mais precisa.

Você também pode gostar