You are on page 1of 6

Anlise de desempenho dos mtodos de ordenao

Emerson J. Fernandes, Vincius H. Rodrigues,


Cincia da Computao FIC Faculdades Integradas de Caratinga
Caratinga MG Brasil

klopewsck@gmail.com,vinicius190593@gmail.com

Abstract. This article shows how meta-functions methods of sorting are:


selection, insertion, bubble, shellsort, mergesort, quicksort, heapsort,
through scheduling algorithms are sorted in ascending order, descending,
random, and show how trade works made in the three vector types. It will
calculate the time spent by each method, we use C language to implement
the system and specifies functions created for this code. Also showing the
methods graphically on the screen to the end user to see how changes are
made in each vector, methods of ordering.
Resumo. Este meta-artigo mostra como funciona os mtodos de ordenao
so eles: seleo, insero, bolha, shellsort, mergesort, quicksort, heapsort, por
meio de algoritmos de programao, so ordenados em ordem crescente,
decrescente, aleatrio, assim mostramos como funciona as trocas feitas nos
trs tipos de vetor. Calculando o tempo gasto por cada mtodo, utilizaremos
linguagem em C para implementao do sistema e funes criada especifica
para esse cdigo. Mostrando tambm graficamente os mtodos na tela para
usurio final ver como so feitas as trocas em cada vetor, nos mtodos de
ordenao.
1.

INTRODUO

Este trabalho tem como objetivo mostrar como funcionam os mtodos de


ordenao que sero abordados ao longo dessa meta-artigo. Atravs de
algoritmos de ordenao e suas amplas implementaes, podemos ter uma
noo de como esses mtodos funcionam e como sua abordagem na rea da
cincia da computao, sua contribuio para resolver diversos problemas
apresentados, como ordenar dados, facilitando assim a busca, o agrupamento
dos dados em classes, atualizao de arquivos sequenciais so exemplos
onde a utilizao de algoritmos de ordenao pode agir para organizar e
facilitar o acesso.

Os algoritmos de ordenao a serem utilizados aqui tem como base o


objetivo de implementar um sistema para avaliar o desempenho dos mesmos
atravs de implementaes em linguagem de programao em C, com a
utilizao de trs vetores de tamanho informado pelo usurio, onde sero feito
testes nesses vetores criados para cada mtodo de ordenao, seja sua forma
de ordenar (crescente, decrescente, aleatrio). Assim teremos testes de tempo
e quantidade de troca efetuada nos trs tipos de vetores, em todos os
algoritmos de ordenao que sero apresentados abaixo.
Os mtodos usados sero:

Seleo: Procuramos na lista itens, selecionado um item por vez e colocando


na sequncia.

Insero: passado pela lista vrio vezes e em cada vez que passada pela lista
colocado um item da sequencia desordenada na posio correta.

Bolha: Troca vrias vezes seus elementos adjacentes que esto fora de ordem
at que a lista fique em sequncia. Assim os itens passo pela lista de acordo
com os seus valores, passando o maior para o final (em uma ordenao
crescente).

Shellsort: Sua ordenao feita dividindo e conjunto em subconjuntos. Estes


subconjuntos contem n elementos separados. Os subconjuntos so ordenados
pro insero e por fim estes passos so repetidos diminuindo o incremento at
ser ordenado.

Merge sort: Possui o lema de seu lema dividir para conquistar. Dividimos o
problema em subproblemas e resolv-los em recursividade. Depois que os
subproblemas so resolvidos unimos suas resolues.

Quicksort: Seu lema o princpio da diviso e conquista. Este mtodo


divide a lista em suas sub-listas com base em um elemento piv. Em
seguida os elementos da sub-listas so dispostos na forma de sejam
menores que o piv. Este processo de partio e repetido at que a lista
seja organizada.

Heapsort: Possui o mesmo princpio do mtodo de seleo. Seleciona o


menor item do vetor e trocamos pelo primeiro item do vetor. Repetindo a
operao nos itens restantes e depois com os dois itens restantes e assim por
diante.

2.

METODOLOGIA

O trabalho foi proposto para grupo, utilizar meios de programao em


linguagem C, para obter alguns resultados utilizando algoritmos de ordenao,
assim possamos saber o tempo que leva para cada algoritmo efetuar suas
trocas e ordenar o vetor, alm de exibir suas trocas efetuadas no vetor. Onde
estaro sendo ordenados por trs tipos de ordenaes (crescente,
decrescente, aleatrio) para sete mtodos de ordenao que foram escolhidos
para serem utilizadas, depois mostrando suas trocas graficamente as trocas.
A soluo encontrada para resolver o problema foi a seguinte, criamos
parmetros para possamos trabalhar com eles dentro do cdigo junto com as
funes, que receberam a funo alocar_vetor (tam) ;, para cada mtodo. A
seguir mostra uma imagem de como foram declarado os parmetros:

Foram utilizados tambm os arquivos para criao do projeto, Base.c,


Base.h, ordenao.c, ordenao.h todos implementados no projeto onde
esto as funes para cada mtodo de ordenao, alm de ter tambm as
funes de alocar o vetor, fazer troca, exibir as trocas, preencher o vetor e
imprimir. Para criao de um menu de escolha, onde o usurio entra com as
opes desejadas, onde e possvel escolher entre avaliao de desempenho,
a exibio grfica das trocas efetuada no momento da ordenao dos mtodos,
depois com que usurio escolhe a opo, comea a execuo do programa,
com utilizao de IF, recolhemos a informao do tamanho do vetor que
usurio informar utilizamos de chamar uma a funo alocar_vetor(tam); para
os parmetros, depois com uso das funo preencher o vetor, para
preenchemos cada vetor de ordenao. No menu de opes swith case
iniciado os testes, para calcularmos o tempo feito pelas trocas que cada vetor
fazia fazendo tambm o calculo com quantidades de trocas feitas em cada
vetor para cada mtodo de ordenao, utilizamos uma funo da biblioteca do
Windows para calcularmos esse tempo das trocas em milissegundos a funo
GetTickCount(); logo abaixo uma imagem da parte do cdigo onde utilizarmos
a funo da biblioteca do Windows.

Onde start dava incio ao relgio para calcularmos o tempo gasto em


cada troca, tambm a soma das quantidades de troca que cada vetor faz na
hora da ordenao para todos os mtodos utilizados.

J no case 2, criamos a opo de escolha do mtodo a ser trabalhado,


exibimos graficamente as trocas do vetor sendo feitas atravs da funo exibe
as trocas, onde e representado cada troca por um (*). Assim a funo
receberia as trocas feitas por cada mtodo de ordenao feitas no vetor at o
vetor ordenado assim exibindo graficamente na tela abaixo, teremos a primeira
imagem mostrando a funo que exibe na tela as trocas feitas, a segunda
imagem a representao na tela com o programa em execuo.

imagem: funo onde exibe as trocas do vetor

Imagem representando na tela as trocas graficamente:

3.

Resultados obtidos

NMERO DE TROCAS

TEMPO GASTO PARA AS TROCAS EM SEGUNDOS

Concluso
Podemos dizer que trabalhar com mtodos de ordenao por mais

complexo que seja, sempre acharmos uma aplicabilidade para o mesmo seja
em diversas coisa do dia-a-dia, nas coisas que utilizamos para trabalho esses
mtodos esto l e nem percebemos como so uteis na organizao dos
nossos dados, no s na rea da computao mais e aplicvel em quase tudo.
Aprendizado com esse trabalho essencial pois aprendemos como cada mtodo
funciona, como seu grau de complexidade todo seu funcionamento tempo
gasto, mais quantidade de troca.

Referncias
GOOGLE History. Disponvel em . Acessado em 25 de maio de 2013.
GOOGLE Picasa. Disponvel em . Acessado em 15 de maio de 2013.
NASDAQ. Disponvel em . Acessado em 25 de maio de 2013.
OLIVEIRA, lvaro Borges de. Mtodos de Ordenao Interna. 1 edio. So
Paulo: Visual Books, 2002. 116 p.
ZIVIANI, Nivio. Projeto de Algoritmos com implementao em Java e C++. So
Paulo: Thomson Learning, 2007. 642 p.
CORMEN, Thomas H. et al. Algoritmos. Massachusetts: Campus, 2002. 916 p.