You are on page 1of 14

1

UNIVERSIDADE PAULISTA
Danillo de Oliveira Medeiros Martins

Mtodos de Ordenao:
Comparativo entre os mtodos mais comuns

SO PAULO
2015

Sumrio

1. Introduo............................................................................................................................03
2.
Utilizao
ordenao.......................................................................................................04
3.
Selecionados..........................................................................................................05

de
Mtodos

4. Cdigo fonte.........................................................................................................................06
4.1.
Sort........................................................................................................................06

Bubble

4.2. Insertion Sort.....................................................................................................................06


4.3
Sort......................................................................................................................07
5.
Resultados
testes............................................................................................................08
5.1.
Sort........................................................................................................................09

Selection
dos
Bubble

5.2. Insertion Sort.....................................................................................................................10


5.3
Sort......................................................................................................................11

Selection

6. Concluso.............................................................................................................................12

1. Introduo

O presente comparativo tem por intuito realizar testes de performance de trs dentre os
mais comuns mtodos de ordenao de vetores utilizados na computao pela linguagem de
programao estrutura, sendo aqui utilizada a linguagem C como base dos testes.

2. Utilizao de Ordenao

A ordenao de vetores traz consigo a premissa de permitir mais facilmente a


localizao de itens dentro de um vetor ou matriz no mbito computacional.
Sendo utilizado principalmente para agilizar e facilitar a busca de itens dentro de um
vetor. Permitindo atravs deste, inclusive, a busca binria que consiste em dividir o vetor em
duas partes, desprezando a parte que no contm o item buscado, essa operao repetida n
vezes at que reste somente o item buscado em si.
Tal mtodo de busca se torna inaplicvel caso o vetor ou matriz no esteja ordenado,
pois assim a execuo de um programa de busca no teria condies de identificar a possvel
posio do elemento buscado, salvo caso o mesmo estivesse indexado, situao esta que
dispensaria a ordenao, porm necessitando de maior espao em memria para que fosse
criado o ndice.

3. Mtodos Selecionados

Dentre os diversos mtodos conhecidos para a ordenao de vetores foram


selecionados trs dentre os mais comuns para a comparao de performance que consiste em
analisar a praticidade de implantao do algoritmo em um programa, a sua facilidade de
utilizao e a sua velocidade de execuo em relao ao tamanho do vetor.
Sendo para este teste selecionados os mtodos conhecidos como: Bubble Sort
(ordenao bolha), Insertion Sort (ordenao de insero) e Selection Sort (ordenao de
seleo).
Apesar de serem vastamente conhecidos, computacionalmente, faremos aqui uma
breve descrio de cada para melhor entender a lgica do algoritmo.
Bubble Sort: este mtodo simples de ordenao tem como preceito percorrer o mesmo
vetor diversas vezes e reorganiza-lo de modo que os elementos de menor valor sejam
colocados nas primeiras posies.
Insertion Sort: esse algoritmo percorre um vetor de elementos da esquerda para a
direita e medida que avana vai deixando os elementos mais esquerda ordenados.
Selection Sort: baseado em passar sempre o menor valor do vetor para a primeira
posio, depois o de segundo menor valor para a segunda posio, e assim feito
sucessivamente com os elementos restantes, at os ltimos dois elementos.

4. Cdigo fonte
Para facilitar a compreenso e melhor demonstrar a implementao do algoritmo, ser
disponibilizado o ponto central do mesmo para conhecimento, sendo representado o tamanho
do vetor pela palavra SIZE.

4.1 Bubble Sort:


for (x=0;x<SIZE;x++)
{
for (y=x+1;y<SIZE;y++)
{
if(vector[x]>vector[y])
{
temp=vector[x];
vector[x]=vector[y];
vector[y]=temp;
}
}
}

4.2. Insertion Sort:


for (x=1;x<SIZE;x++)
{
temp=vector[x];
y=(x-1);
while((y>0)&&(vector[y]>temp))
{
vector[y+1]=vector[y];
y-=1;
}
vector[y+1]=temp;
}

4.3. Selection Sort:


for (x=1;x<SIZE;x++)
{
minor=x;
for(y=x+1;y<SIZE;y++)
{
if (vector[y]<vector[minor])
{
minor=y;
}
}
temp=vector[minor];
vector[minor]=vector[x];
vector[x]=temp;
}

5. Resultados dos testes

Os testes se deram de trs diferentes maneiras para cada mtodo de ordenao


utilizado, foram criados vetores de diferentes tamanhos e os mesmos foram preenchidos com
nmeros aleatrios e aplicados a eles os diferentes mtodos de ordenao, sendo testado o
comportamento do algoritmo em vetores desordenados, em seguida com vetores parcialmente
ordenados e por ltimo com vetores totalmente ordenados, para que se pudesse definir no s
a efetividade do algoritmo em realizar sua funo como tambm analisar seu desempenho
quando no se faz, ou se faz parcialmente, necessria a ordenao do vetor.
Para uma melhor visualizao dos resultados obtidos, seguem-se nas pginas a seguir,
grficos e anlise resumida tomando como base os mesmos.

Bubble Sort
450,407
433,922
395,656

500.000

374,157
353,750
304,109

450.000

303,343
284,656
240,016

400.000

240,031
218,750
182,031

350.000

182,843
175,343
135,593

300.000
Tamanho DO Vetor

133,703
124,578
93,468

250.000

92,156
79,672
60,125

200.000

56,437
47,234
33,922

150.000

28,594
23,500
14,563

100.000

8,360
7,063
3,594

50.000
0

100,000

200,000

300,000

400,000

500,000

Tempo decorrido (milisegundos)


Ordenado

Semiordenado

Desordenado

Tal como podemos observar no grfico, o algoritmo em questo, mostrou um desempenho


eficaz no que se refere a ordenao do vetor, pode-se ainda verificar que demonstrou
diferena significativa entre a ordenao de vetores no ordenados e vetores totalmente
ordenados, porm no apresentou a mesma eficcia ao se comparar vetores parcialmente
ordenados e vetores totalmente desordenados.

10

Insertion Sort
500.000
0

227,219

450.000
0

184,235

284,282

228,640

181,312
145,172

400.000
0

140,032
110,750

350.000
0

102,594
81,906

300.000
0
tamanho do vetor

71,016
56,156

250.000
0

45,157
36,110

200.000
0

25,609
20,438

150.000
0

11,312
9,094

100.000
0

2,828
50.000 2,328
0
0

50,000 100,000 150,000 200,000 250,000 300,000


tempo de ordenao (milisegundos)

Ordenado

Semiordenado

Desordenado

Pelo grfico podemos observar que o mtodo de ordenao em questo mostrou agilidade na
ordenao dos vetores, bem como diferenas bem significativas em comparao de vetores
parcialmente ordenados e vetores totalmente desordenados. Alm disso mostrou-se capaz de
percorrer todo o vetor ordenado em tempo desprezvel, comprovando assim uma grande
eficincia.

11

Pode-se

perceber

atr

Selection Sorn
366,785
365,375
391,985

500.000

298,406
300,203
306,094

450.000

234,484
237,094
233,078

400.000

177,844
179,641
183,750

350.000

131,234
130,610
139,359

300.000
Tamanho dos vetores

90,235
91,015
92,047

250.000

57,953
58,000
58,500

200.000

32,891
32,500
33,000

150.000

14,625
14,766
14,469

100.000

3,688
50.000 3,703
3,688
0

100,000

200,000

300,000

400,000

500,000

Tempo de ordenao (milisegundos)


Ordenado

Semiordenado

Desordenado

avs do grfico que o tempo de ordenao para os vetores em qualquer situao, estejam eles
desordenados, parcialmente ordenados, ou completamente ordenados, sofre pouca ou at
mesmo nenhuma alterao para vetores de tamanho menor, tornando-se ainda mais ineficiente

12

conforme o tamanho do vetor aumenta, requerendo mais tempo para verificar um vetor
ordenado do que o dispensado para um vetor desordenado.

13

6. Concluso

Aps realizadas as anlises e verificadas as particularidades de cada mtodo de


ordenao pode-se facilmente concluir que, dentre os algoritmos selecionados, aquele de
demonstrou melhor performance em todos os testes foi Insertion Sort. Mostrando-se mais
eficiente que os outros no s na velocidade de execuo, como principalmente ao tratar de
vetores j ordenados, o que possibilita que sua utilizao em um programa maior, e de maior
complexidade, traga agilidade e fluidez, no que se refere ordenao de vetores. Tal como
demonstra o grfico a seguir.

14

Comparativo Geral

50,000 100,000 150,000 200,000 250,000 300,000 350,000 400,000 450,000 500,000
50.000

100.000

150.000

200.000

350.000

400.000

450.000

500.000

250.000

300.000

You might also like