Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
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.