22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

{<br />

MaiorEl<strong>em</strong>ento(v, k, m, Pos);<br />

if (v[k] < v[Pos])<br />

{<br />

v[Pos] = v[k];<br />

v[k] = m;<br />

}<br />

k--;<br />

}<br />

}<br />

O BubbleSort<br />

O algoritmo BubbleSort consiste <strong>em</strong> se percorrer o vetor a ser ordenado várias vezes, comparando-se<br />

cada el<strong>em</strong>ento com o seguinte, permutando suas posições se eles não estiver<strong>em</strong> na ord<strong>em</strong> pretendida. Assim,<br />

cada vez que o vetor é percorrido o maior (ou o menor) el<strong>em</strong>ento ainda não ordenado é colocado na sua<br />

posição de ordenação definitiva. Naturalmente, o vetor será percorrido até que não haja mais trocas a se<br />

fazer, quando então ele estará ordenado. Por ex<strong>em</strong>plo, se o vetor a ser ordenado <strong>em</strong> ord<strong>em</strong> crescente for<br />

v = {5, 1, 9, 3, 7, 2}, teríamos as seguintes configurações para v, de acordo com a ord<strong>em</strong> de percurso:<br />

Percurso v<br />

0 {5, 1, 9, 3, 7, 2}<br />

1 {1, 5, 9, 3, 7, 2}<br />

{1, 5, 3, 9, 7, 2}<br />

{1, 5, 3, 7, 9, 2}<br />

{1, 5, 3, 7, 2, 9}<br />

2 {1, 3, 5, 7, 2, 9}<br />

{1, 3, 5, 2, 7, 9}<br />

3 {1, 3, 2, 5, 7, 9}<br />

4 {1, 2, 3, 5, 7, 9}<br />

A seguinte função impl<strong>em</strong>enta o algoritmo descrito acima.<br />

void BubbleSort(int *v, int t)<br />

{<br />

int j, s, Aux;<br />

do<br />

{<br />

s = 1;<br />

t = t - 1;<br />

for (j = 0; j < t; j = j + 1)<br />

if (v[j] > v[j + 1])<br />

{<br />

Aux = v[j];<br />

v[j] = v[j + 1];<br />

v[j + 1] = Aux;<br />

s = 0;<br />

}<br />

}<br />

while (s == 0);<br />

}<br />

Observe que a variável s verifica se houve alguma troca para que outro percurso seja realizado.<br />

Observe também que o comando t = t – 1 se justifica pelo fato de que no percurso de ord<strong>em</strong> i, i – 1<br />

el<strong>em</strong>entos já estão <strong>em</strong> suas posições definitivas.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!