Análise de Performance de Algoritmos de Ordenação de Dados
Análise de Performance de Algoritmos de Ordenação de Dados
Análise de Performance de Algoritmos de Ordenação de Dados
Santana de Parnaíba – SP
2017
ATIVIDADES PRÁTICAS SUPERVISIONADAS (APS):
Desenvolvimento de sistema para análise de performance de algoritmos de
ordenação de dados
Santana de Parnaíba – SP
2017
ATIVIDADES PRÁTICAS SUPERVISIONADAS (APS):
Desenvolvimento de sistema para análise de performance de algoritmos de
ordenação de dados
Aprovado em __/__/__
BANCA EXAMINADORA
SUMÁRIO
1 INTRODUÇÃO...........................................................................................................................5
2.1 BubbleSort..............................................................................................................................6
2.2 QuickSort................................................................................................................................8
3.1 InsertionSort.........................................................................................................................11
6 Conclusão.................................................................................................................................21
7 BIBLIOGRAFIA........................................................................................................................22
INDICE DE ILUSTRAÇÕES TABELAS E FIGURAS
2.1 BubbleSort
O BubbleSort (também conhecido como método bolha) é simples e eficaz ao
ordenar pequenos números onde compara todos os valores, através de varias
trocas entre pares adjacentes de elementos, sempre que o próximo elemento
for menor que o anterior. Após a varredura no vetor e desde que o maior e
menor número esteja corretamente posicionado (dependendo de que forma
será solicitada a ordenação) ele não será mais comparado.
Abaixo veremos como é realizada a troca:
No laço while() foi criado e executado enquanto o valor de troca for true, sendo
que na primeira interação foi configurada como false.
O laço for percorre o primeiro elemento ate que o ultimo elemento -1 (nuca
chega a ler o ultimo elemento) verificando se o elemento atual é maior que o
próximo elemento que será lido.
Para verificarmos se a variável troca é útil, quando passa pela primeira vez no
vetor de elementos sendo realizada qualquer troca efetiva será true, fazendo
com que faça nova varredura em todos os elementos ate que todos estejam
devidamente ordenados.
2.2 QuickSort
Abaixo temos exemplificando a medição com x elementos e o tempo gasto para ordenação:
3.1 InsertionSort
O InsertionSort (também conhecido por método de inserção direta) baseia-se
em ordenar da esquerda para a direita, onde os elementos lidos a esquerda
ficam ordenados, eficiente em ordenar um menor número de valores.
Abaixo veremos como é realizada a troca:
Aplicando InsertionSort
Abaixo temos exemplificando a medição com x elementos e o tempo gasto para ordenação:
4.1 SelectionSort
O SelectionSort (também conhecido como método de seleção direta) o vetor
selecionará sequencialmente os vetores de ordenação localizando o próximo
que seja o menor ou maior valor, sendo comparado ao do inicio, se verdadeira
a posição é trocada, assim ordenara o algoritmo.
Aplicação do SelectionSort
// Função select_sorte – Recebe uma matriz desordenada e a ordena com
// algoritmo select sort
//
// Entradas – matriz a ser ordenada
// - tamanho da matriz a ordenar
// Saídas - nenhuma
void select_sort(unsigned char matriz[], unsigned int tamanho){
100 38 ms 0 ms
1.000 359 ms 0 ms
10.000 3558 ms 0 ms
import java.io.IOException;
bubbleSort(vetor);
package quicksort;
import java.io.IOException;
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
quickSort(vetor,0,vetor.length-1);
vetor[inicio] = vetor[f];
vetor[f] = pivo;
return f;
}
}
//Esse algoritmo é Executado em = 31 ms
Analisando seu desempenho com diversos valores, o QuickSort obteve o
melhor resultado na maioria dos testes. Sua eficiência foi identificada apenas
nos grandes arquivos.
InsertionSort
package insertionsort;
import java.io.IOException;
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException {
insertionSort(vetor);
6 Conclusão
Como era esperado, os algoritmos BubbleSort e InsertionSort tiveram
desempenhos muito inferiores aos QuickSort. Fica muito visível quando se
processa a organiza ção com um milhão de entradas, onde os dois primeiros
demoram mais de duas horas para processar enquanto os outros demoram
menos de um segundo. Também é visível a complexidade dos algoritmos se
pararmos para analisar as comparações e trocas. Nos primeiros algoritmos, a
taxa de aumento de trocas e comparações é superior a que a taxa dos últimos
dois algoritmos. O QuickSort possui um desempenho melhor com um milhão de
entradas do que os dos primeiros algoritmos usando dez mil elementos.
Entretanto, não podemos esquecer que cada algoritmo possui sua utilidade.
Por exemplo, em alguma aplicação onde o volume de dados é pequena e há
pouca inserção de novos dados, o InsertionSort pode sim ser utilizado, pois
bases de dados que estejam quase organizadas têm um desempenho razoável
com esse algoritmo.
7 BIBLIOGRAFIA