Você está na página 1de 9

UNIVERSIDADE DO CONTESTADO UNC/CONCRDIA

Curso: Sistemas de Informao 1/2012


3 Fase 20/06/2012
Disciplina: Estruturas de Dados
Professor: Maximiliano Zambonatto Pezzin
Acadmica: Daiana Paula de vila
Introduo
Em vrios momentos do dia a dia, o homem depara-se com a necessidade de
consultar dados ordenados. Como exemplo, pode-se citar uma lista telefnica.
Imagine como seria consultar o telefone de uma pessoa se os nomes no
estivessem classificados em ordem alfabtica. Por isso uma das atividades mais
utilizada na computao a ordenao.
As ordens mais utilizadas so as nmericas e as lexicogrficas.
Existem diversos algoritmos para ordenao interna. No presente trabalho ser
apresentada a implementao e os testes de seis destes mtodos.
Bubble Sort
Insertion Sort
Selection Sort
Shell Sort
Quick Sort
Heap Sort
Merge Sort
Os testes foram realizados com vetores de nmeros inteiros de tamanho 25 e tipos
(ordenados em ordem crescente e decrescente, aleatrios e parcialmente
ordenados com apenas 20% dos elementos fora da ordem).
Como medida para a comparao entre os mtodos foi colhido durante cada
teste:
1. Nmero de comparaes entre chaves do vetor;
2. Nmero de movimentaes;
3. Contagem do tempo gasto durante a execuo do algoritmo;

Mtodos de Ordenao
Ordenar corresponde ao processo de rearranjar um conjunto de objetos em ordem
ascendente ou descendente. O objetivo principal da ordenao facilitar a
recuperao posterior de itens do conjunto ordenado.
Os mtodos de ordenao so classificados em dois grandes grupos: ordenao
interna e externa.
1. Ordenao Interna: So os mtodos que no necessitam de uma memria
secundria para o processo, a ordenao feita na memria principal do
computador;
2. Ordenao Externa: Quando o arquivo a ser ordenado no cabe na memria
principal e, por isso, tem de ser armazenado em fita ou disco.
A principal diferena entre os dois grupos que no mtodo de ordenao interna
qualquer registro pode ser acessado diretamente, enquanto no mtodo externo
necessrio fazer o acesso em blocos.

Selection Sort
Tem como principio de funcionamento selecionar o menor item do vetor e a seguir
troc-lo pela primeira posio do vetor. Isto ocorre para os n-1 elementos restantes,
depois com os n-2 itens, at que reste apenas um elemento. A principal diferena
destes mtodos em relao aos dois j apresentados que ele realiza apenas uma
troca por iterao.

Ilustrao do funcionamento do algoritmo Selection Sort.

Implementao
A colocao do item no seu lugar correto na sequncia ordenada, realizada
trocando o item de menor valor pela primeira posio do vetor.
O algoritmo procede da seguinte forma:
1. Zera os valores das variveis de medio atravs do mtodo ClearAll();
2. Inicia a contagem de tempo com a funo start();
3. O primeiro lao determina a dimenso de busca do menor elemento;
4. O segundo lao responsvel por realizar a busca pelo menor elemento;
5. Feito a busca realizada a troca do menor elemento pelo primeiro elemento;
6. Aps a troca o processo realizado novamente para os n-i itens restantes;

7. A cada comparao incrementa a varivel mComparations e a cada movimentao incrementa a varivel mMoviments;
8. Pausa a contagem de tempo e calcula o tempo gasto armazenando o valor na
varivel mTime;
Anlise do algoritmo
O Selection Sort um mtodo muito simples. Alm disso, o algoritmo de seleo
apresenta um comportamento espetacular quanto ao nmero de movimentos de
registros, cujo tempo de execuo linear, esta particularidade dificilmente
encontrada em outros algoritmos de ordenao. o algoritmo ideal para arquivos
com registros muito grandes.
Vantagens
- Fcil Implementao
- Pequeno nmero de movimentaes
- Interessante para arquivos pequenos
Desvantagens
- O fato de o arquivo j estar ordenado no influencia em nada
- Ordem de complexidade quadrtica
- Algoritmo no estvel

QuickSort
o algoritmo mais rpido que se conhece entre os de ordenao interna para uma
ampla variedade de situaes. Foi escrito em 1960 e publicado em 1962 por C.
A. R. Hoare aps vrios refinamentos. Porm em raras instncias especiais ele
lento. Adotando a estratgia Dividir para conquistar o funcionamento resume-se a
dividir o problema de ordenar um vetor de n posies em dois outros menores. O
QuickSort provavelmente o mais utilizado, porm a sua implementao demanda
um pouco mais de pacincia e cautela.
Ilustrao do funcionamento do algoritmo QuickSort.

Implementao
A parte crucial do algoritmo o mtodo Partition quem tem a funo de rearranjar o
vetor por meio da escolha de um piv, de tal forma que ao final o vetor estar
particionado em uma parte esquerda com chaves menores ou iguais ao piv e outra
maiores ou iguais.
O algoritmo procede da seguinte forma:
1. Zera os valores das variveis de medio atravs do mtodo ClearAll();
2. Inicia a contagem de tempo com a funo start();
3. Escolha um elemento aux1 do vetor Array para ser o piv;
4. Usando aux1 divida o vetor Array em duas partes, da seguinte maneira:

Comeando com i = posio inicial, percorra o vetor em forma crescente at que


um elemento Array[i] = aux1 seja encontrado.
Comeando com j = posio nal, percorra o vetor em forma descendente at que
um elemento A[j] = X seja encontrado;
Se i <= j, troque Array[i] com Array[j];
Continue percorrendo o vetor procurando elementos Array[i] e Array[j] at que os
contadores i e j se cruzem (j < i).
5. Repita, recursivamente, os passos 3 e 4 para as duas partes
6. A cada comparao incrementa a varivel mComparations e a cada
movimentao incrementa a varivel mMoviments;
7. Pausa a contagem de tempo e calcula o tempo gasto armazenando o valor na
varivel mTime;
Anlise do algoritmo
O QuickSort considerado o mtodo mais eciente e altamente recomendvel para
arquivos grandes. Quanto mais o vetor estiver desordenado, maior ser sua
vantagem em relao aos outros mtodos. A escolha correta do piv essencial
para a garantia de ecincia do algoritmo.
Vantagens
- Extremamente Eficiente
- Necessita apenas de um pequena pilha como memria extra
- Complexidade n log n
Desvantagens
- Tem um pior caso de O(n2)
- Implementao difcil
- No estvel

Testes
Aqui sero apresentados os resultados dos testes realizados. Os algoritmos de
ordenao foram escritos na linguagem Java.

3.2 Resultados
Foram testados os seis mtodos de ordenao, para todos os mtodo foi testado
um tamanho igual de vetor (25) e para cada tamanho um tipo diferente (Ordenado
Crescente, Ordenado Decrescente, Ordenado Aleatrio e parcialmente Aleatrio).
Os resultados aqui apresentado a mdia dos valores. Os mtodos sero
numerados para apresentao na tabela, conforme a lista abaixo:
1. Bubble Sort
2. Insertion Sort
3. Selection Sort
4. ShellSort
5. Quick Sort
6. Merge Sort

Você também pode gostar