Sunteți pe pagina 1din 13

Gostei (3) (0)

Algoritmos de ordenao:
anlise e comparao
Veja neste artigo os conceitos bsicos de algoritmo e um
dos principais tipos de algoritmos: os de ordenao. Sero
apresentados os principais tipos e uma comparao entre
eles.
Artigo realizado sob orientao do professor Juliano Schimiguel - Universidade
Cruzeiro do Sul.
interpretaes por quem l;
Outra forma de representar um algoritmo o fluxograma, uma representao
DevWare Controle de Projetos agora gratuito. Experimente uma nova ferramenta
para controlar suas tarefas. Saiba mais
post favorito comentrios
Conhece a assinatura MVP?
Publicidade
3 11 Curtir Curtir 9
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Anuncie | Loja | Publique | Assine | Fale conosco
Hospedagem web por Porta 80 Web Todos os Direitos Reservados a
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
1 de 13 06-07-2014 11:30
funo especfica. Essa representao, como o prprio nome diz, mostra o fluxo
do algoritmo e tambm elimina as vrias interpretaes que a descrio
narrativa permitia sobre um algoritmo;
Por ltimo, existe a linguagem algoritma (Pseudocdigo ou Portugol) que a
que mais se aproxima da estrutura de uma linguagem estruturada.
Um tipo de algoritmo muito usado na resoluo de problemas computacionais so os
algoritmos de ordenao, que servem para ordenar/organizar uma lista de nmeros
ou palavras de acordo com a sua necessidade. As linguagens de programao j
possuem mtodos de ordenao, mas bom saber como funcionam os algoritmos,
pois h casos de problemas em que o algoritmo de ordenao genrico no resolve,
s vezes necessrio modific-lo.
Os mais populares algoritmos de ordenao so: Insertion sort, Selection sort,
Bubble sort, Comb sort, Quick sort, Merge sort, Heap sort e Shell sort. Neste artigo
sero estudados os algoritmos Bubble sort, Selection Sort, Quick sort e o Insertion
sort, explicando o funcionamento de cada um deles.
Definio de Algoritmos
O Algoritmo um esquema de resoluo de um problema. Pode ser implementado
com qualquer sequncia de valores ou objetos que tenham uma lgica infinita (por
exemplo, a lngua portuguesa, a linguagem Pascal, a linguagem C, uma sequncia
numrica, um conjunto de objetos tais como lpis e borracha), ou seja, qualquer
coisa que possa fornecer uma sequncia lgica.
Podemos ilustrar um algoritmo pelo exemplo de uma receita culinria, embora
muitos algoritmos sejam mais complexos. Um Algoritmo mostra passo a passo os
procedimentos necessrios para resoluo de um problema.
Descrio Narrativa
A descrio narrativa o uso da sua lngua nativa para descrio dos passos para se
resolver um problema.
A vantagem dessa forma de representao que qualquer um pode faz-la sem ter
conhecimentos avanados.
A desvantagem que no h um padro, cada pessoa pode escrever como quiser.
Outra desvantagem a impreciso, ou seja, a descrio pode no ficar clara e
pode-se tirar vrias interpretaes diferentes de um mesmo algoritmo.
Abaixo temos um exemplo de algoritmo usando a descrio narrativa:
Listagem 1: Algoritmo Calculando a mdia em descrio narrativa
+Outros
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
2 de 13 06-07-2014 11:30
Passo 1: Obter os valores de n1,n2,n3;
Passo 2: Somar os valores do passo 1;
Passo 3: Dividir o resultado obtido no Passo 2 por 3;
Passo 4: Se o resultado do Passo 3 for maior ou igual a 6 ento escreva
Parabns voc foi aprovado, seno, escreva Infelizmente voc ficou de exame
e v para o fim do programa
Fim
Fluxograma
O fluxograma passou a ser usado para eliminar ambiguidades dos algoritmos. So
smbolos grficos padronizados, cada um representado por uma forma geomtrica
que implica em uma ao, instruo ou um comando distinto.
Esta forma intermediria a descrio narrativa e ao pseudocdigo, pois mais
precisa do que a primeira, porm, no se preocupa com detalhes de implementao
do programa, como os tipos das variveis usadas.
Figura 1: Algoritimo Calcular Mdia em representao de fluxograma
Linguagem Algoritma (Pseudocdigo ou Portugol)
Essa forma de representao surgiu para tentar suprir as deficincias das outras
representaes. Consiste na definio de uma pseudolinguagem de programao,
cujos comandos so em portugus, mas que j lembram um pouco a estrutura de
uma linguagem de programao estruturada, ou seja, a pseudolinguagem se
assemelha muito ao modo como os programas so escritos. Isso vai permitir que os
algoritmos sejam traduzidos, quase que diretamente, para uma linguagem de
programao.
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
3 de 13 06-07-2014 11:30
algoritmo CalcularMedia
var
n1,n2,n3,media :real;
inicio
leia(n1,n2,n3);
media (n1+n2+n3)/3;
se media>=6 entao
escreva(Parabns voc foi aprovado);
seno
escreva(Infelizmente voc ficou de exame);
Fimse
fimalgoritmo
Algoritmos de Ordenao
Algoritmo de ordenao, em cincia da computao, um algoritmo que coloca os
elementos de uma dada sequncia em uma certa ordem. Em outras palavras efetua
sua ordenao completa ou parcial. O objetivo da ordenao facilitar a recuperao
dos dados de uma lista.
Para este artigo foram escolhidos alguns algoritmos de ordenao para serem
estudados que so: Bubble Sort, Selection Sort, Quick Sort e Insertion Sort.
Bubble Sort
Bubble sort o algoritmo mais simples, mas o menos eficientes. Neste algoritmo
cada elemento da posio i ser comparado com o elemento da posio i + 1, ou
seja, um elemento da posio 2 ser comparado com o elemento da posio 3. Caso
o elemento da posio 2 for maior que o da posio 3, eles trocam de lugar e assim
sucessivamente. Por causa dessa forma de execuo, o vetor ter que ser percorrido
quantas vezes que for necessria, tornando o algoritmo ineficiente para listas muito
grandes.
Leia tambm: Entendendo o Algortmo Bubble Sort em Java.
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
4 de 13 06-07-2014 11:30
Figura 2: Esquema de funcionamento do Buble Sort
verificado se o 3 maior que 5, por essa condio ser falsa, no h troca.
verificado se o 5 maior que 1, por essa condio ser verdadeira, h uma
troca.
verificado se o 5 maior que 2, por essa condio ser verdadeira, h uma
troca.
verificado se o 5 maior que 4, por essa condio ser verdadeira, h uma
troca.
O mtodo retorna ao incio do vetor realizando os mesmos processos de
comparaes, isso feito at que o vetor esteja ordenado.
Selection Sort
Este algoritmo baseado em se passar sempre o menor valor do vetor para a
primeira posio (ou o maior dependendo da ordem requerida), depois o segundo
menor valor para a segunda posio e assim sucessivamente, at os ltimos dois
elementos.
Neste algoritmo de ordenao escolhido um nmero a partir do primeiro, este
nmero escolhido comparado com os nmeros a partir da sua direita, quando
encontrado um nmero menor, o nmero escolhido ocupa a posio do menor
nmero encontrado. Este nmero encontrado ser o prximo nmero escolhido, caso
no for encontrado nenhum nmero menor que este escolhido, ele colocado na
posio do primeiro nmero escolhido, e o prximo nmero sua direita vai ser o
escolhido para fazer as comparaes. repetido esse processo at que a lista esteja
ordenada.
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
5 de 13 06-07-2014 11:30
Figura 3: Esquema de funcionamento do Selection Sort
Neste passo o primeiro nmero escolhido foi o 3, ele foi comparado com todos
os nmeros sua direita e o menor nmero encontrado foi o 1, ento os dois
trocam de lugar.
O mesmo processo do passo 1 acontece, o nmero escolhido foi o 5 e o menor
nmero encontrado foi o 2.
No foi encontrado nenhum nmero menor que 3, ento ele fica na mesma
posio.
O nmero 5 foi escolhido novamente e o nico nmero menor que ele sua
direita o 4, ento eles trocam.
Vetor j ordenado.
Insertion sort
O Insertion sort um algoritmo simples e eficiente quando aplicado em pequenas
listas. Neste algoritmo a lista percorrida da esquerda para a direita, medida que
avana vai deixando os elementos mais esquerda ordenados.
O algoritmo funciona da mesma forma que as pessoas usam para ordenar cartas em
um jogo de baralho como o pquer.
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
6 de 13 06-07-2014 11:30
Figura 4: Esquema de funcionamento do Insertion Sort
Neste passo verificado se o 5 menor que o 3, como essa condio falsa,
ento no h troca.
verificado se o quatro menor que o 5 e o 3, ele s menor que o 5, ento
os dois trocam de posio.
verificado se o 2 menor que o 5, 4 e o 3, como ele menor que 3, ento o
5 passa a ocupar a posio do 2, o 4 ocupa a posio do 5 e o 3 ocupa a
posio do 4, assim a posio do 3 fica vazia e o 2 passa para essa posio.
O mesmo processo de comparao acontece com o nmero 1, aps esse processo o
vetor fica ordenado.
Quick sort
O Quicksort o algoritmo mais eficiente na ordenao por comparao. Nele se
escolhe um elemento chamado de piv, a partir disto organizada a lista para que
todos os nmeros anteriores a ele sejam menores que ele, e todos os nmeros
posteriores a ele sejam maiores que ele. Ao final desse processo o nmero piv j
est em sua posio final. Os dois grupos desordenados recursivamente sofreram o
mesmo processo at que a lista esteja ordenada.
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
7 de 13 06-07-2014 11:30
Figura 5: Esquema de funcionamento do Quick Sort
O nmero 3 foi escolhido como piv, nesse passo procurado sua direita um
nmero menor que ele para ser passado para a sua esquerda. O primeiro
nmero menor encontrado foi o 1, ento eles trocam de lugar.
Agora procurado um nmero sua esquerda que seja maior que ele, o
primeiro nmero maior encontrado foi o 5, portanto eles trocam de lugar.
O mesmo processo do passo 1 acontece, o nmero 2 foi o menor nmero
encontrado, eles trocam de lugar.
O mesmo processo do passo 2 acontece, o nmero 4 o maior nmero
encontrado, eles trocam de lugar.
O vetor desse exemplo um vetor pequeno, portanto ele j foi ordenado, mas
se fosse um vetor grande, ele seria dividido e recursivamente aconteceria o
mesmo processo de escolha de um piv e comparaes.
Estudo de caso
Para realizao prtica deste artigo, foram feito testes com os algoritmos estudados,
os testes foram os seguintes:
Verificar o comportamento dos algoritmos em relao ao tempo, movimentaes de
trocas e comparaes.
Foram testadas 3 ordens de listas com 3 tamanhos diferentes cada:
Ordem 1: lista ordenada em ordem crescente.
Ordem 2: lista ordenada em ordem decrescente.
Ordem 3: lista desordenada com nmeros aleatrios.
Os resultados foram o seguintes:
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
8 de 13 06-07-2014 11:30
Tamanho do vetor: 100
Algoritmo Tempo(ms) Comparaes Movimentaes
Bubble sort 0,0988 5050 0
Selection Sort 0,0602 4950 297
Insertion sort 0,0038 99 198
Quick sort 0,0141 606 189
Tamanho do vetor: 1000
Algoritmo Tempo(ms) Comparaes Movimentaes
Bubble sort 9,5415 500500 0
Selection Sort 5,4587 499500 2997
Insertion sort 0,0359 999 1998
Quick sort 0,1602 9009 1533
Tamanho do vetor: 10000
Algoritmo Tempo(ms) Comparaes Movimentaes
Bubble sort 934,5364 50005000 0
Selection Sort 508,5891 49995000 29997
Insertion sort 0,3558 9999 19998
Quick sort 2,0824 125439 17712
Ordem 2
Tamanho do vetor: 100
Algoritmo Tempo(ms) Comparaes Movimentaes
Bubble sort 0,2045 5050 14850
Selection Sort 0,0750 4950 297
Insertion sort 0,1173 99 5148
Quick sort 0,0147 610 336
Tamanho do vetor: 1000
Algoritmo Tempo(ms) Comparaes Movimentaes
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
9 de 13 06-07-2014 11:30
Bubble sort 20,3377 500500 1498500
Selection Sort 6,9038 499500 2997
Insertion sort 11,4277 999 501498
Quick sort 0,1622 9016 3030
Tamanho do vetor: 10000
Algoritmo Tempo(ms) Comparaes Movimentaes
Bubble sort 1838,0272 50005000 149985000
Selection Sort 665,2050 49995000 29997
Insertion sort 1074,1171 9999 50014998
Quick sort 2,1279 125452 32712
Ordem 3
Tamanho do vetor: 100
Algoritmo Tempo(ms) Comparaes Movimentaes
Bubble sort 0,1596 5050 6777
Selection Sort 0,0698 4950 297
Insertion sort 0,0570 99 2457
Quick sort 0,0314 897 576
Tamanho do vetor: 1000
Algoritmo Tempo(ms) Comparaes Movimentaes
Bubble sort 16,6730 500500 756840
Selection Sort 5,6664 499500 2997
Insertion sort 5,7523 999 254278
Quick sort 0,3725 13138 7983
Tamanho do vetor: 10000
Algoritmo Tempo(ms) Comparaes Movimentaes
Bubble sort 1455,9734 50005000 74237889
Selection Sort 545,1068 49995000 29997
Insertion sort 539,6891 9999 24765961
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
10 de 13 06-07-2014 11:30
Quick sort 4,5072 176065 103635
Concluso
Com base nos testes realizados foram obtidas as seguintes concluses:
Bubble sort
Para listas j ordenadas em ordem crescente o nico algoritmo que no realiza
movimentaes, mas em compensao o que tem o maior tempo e o maior
nmero de comparaes. No s em listas j ordenadas, mas em todos os casos o
bubble sort se mostrou um algoritmo ineficiente.
Selection sort
Nas listas de ordem 1 e ordem 3, o selection sort foi o segundo pior algoritmo, mas
se mostrou mais eficiente do que o Insertion sort em relao ao tempo e a
quantidade de movimentaes na lista de ordem 2.
Insertion Sort
Na lista de ordem 1, o Insertion sort se mostrou mais eficiente que todos os outros
algoritmos em relao ao tempo e comparaes. Na lista de ordem 2 foi menos
eficiente do que o selection sort e na lista de ordem 3 a diferena de tempo entre o
insertion e o selection foi pequena.
Quick Sort
O quick sort certamente o algoritmo mais eficiente em listas totalmente
desordenadas, ele se torna muito eficiente em relao aos outros no quesito de
tempo. Na lista de ordem 3 e na de ordem 2 a diferena de tempo do quick sort em
comparao aos outros foi absurdamente grande.
Referncias bibliogrficas
El Mensajero. Representao de Algoritmos,2010
Ana Paula Pereira. O que algoritmo?,2009.
Wikipdia. Algoritmo.
Luan Pereira Correa. Principais Algoritmos de Ordenao,2012.
Antonio Carlos de Nazar Jnior. Algoritmos e Estrutura de dados : Mtodos de
ordenao interna,2008.
Wikipedia. Buble Sort.
Omkar Bhagat. The Quick sort Algorithm,2012.
Wikipedia. Quick Sort.
Wikipedia. Insertion Sort.
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
11 de 13 06-07-2014 11:30
O que voc achou deste post? Gostei (3) (0)
Bruno De Almeida Honorato
Estudante de Cincias da Computao pela Universidade Cruzeiro do Sul, programador Delphi
intraweb e futuro programador Java.
Comentrio | Tire sua dvida
Mais posts
Pocket Video
Quais as principais dificuldades de programadores?
Pocket Video
Como ser um programador melhor?
Artigo
QlikView com Base de Dados Excel
Artigo
Django Admin: melhora na interface de administrao
Pocket Video
Analisando dados de redes sociais
Artigo
DevMedia Player para Android - FAQ
Pocket Video
Desvendando o IHC - Interao Homem-Computador
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
12 de 13 06-07-2014 11:30
DevMedia Player Mobile: Saiba como verificar o ID do Video
Pocket Video
Registro de Software - O que voc precisa saber
Artigo
Redes Neurais Artificiais: Algoritmo Backpropagation
Listar mais contedo
CONTEDO

REVISTAS

CURSOS

DEVWARE

MVP LOGIN
Algoritmos de ordenao: anlise e comparao http://www.devmedia.com.br/algoritmos-de-orden...
13 de 13 06-07-2014 11:30

S-ar putea să vă placă și