Beruflich Dokumente
Kultur Dokumente
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.
Problemas so questes propostas em busca de uma soluo. Com o
propsito de conceder uma soluo para certo problema, existem os
algoritmos, cada problema que decdivel possui um algoritmo que
determina uma soluo para cada instncia desse problema.
Algoritmos descrevem passo a passo os procedimentos para chegar a
uma soluo de um problema e podem ser representados de trs
formas:
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
Incio
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.
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
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.
Vetor j ordenado.
Insertion sort
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.
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
Tamanho do vetor: 100
Algoritmo
Tempo(ms)
Comparaes
Movimentaes
Bubble sort
0,0988
5050
Selection Sort
0,0602
4950
297
Insertion sort
0,0038
99
198
Quick sort
0,0141
606
189
Tempo(ms)
Comparaes
Movimentaes
Bubble sort
9,5415
500500
Selection Sort
5,4587
499500
2997
Insertion sort
0,0359
999
1998
Quick sort
0,1602
9009
1533
Tempo(ms)
Comparaes
Movimentaes
Bubble sort
934,5364
50005000
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
Tempo(ms)
Comparaes
Movimentaes
Bubble sort
20,3377
500500
1498500
Selection Sort
6,9038
499500
2997
Insertion sort
11,4277
999
501498
Quick sort
0,1622
9016
3030
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
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
Tempo(ms)
Comparaes
Movimentaes
Bubble sort
1455,9734
50005000
74237889
Selection Sort
545,1068
49995000
29997
Insertion sort
539,6891
9999
24765961
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.