Pascal - Ordenar por intercalação-recursão

Aqui está um procedimento recursivo que pode ordenar uma matriz de n inteiros usando o método de Merge sort

 Procedimento Sort_Merge (Var t: TAB; g, d: inteiro);

Var

m, i, j, k: inteiro;

punhalada;

Início

Se d> g então

Início

m: = (g + d) Div 2;

Sort_Merge (t, g, m);

Sort_Merge (t, m + 1, d);

Para i: = m DownTo g Do

s [i]: = t [i];

Para j: = m + 1 To d Do

s [d + m + 1 - j]: = t [j];

i: = g; j: = d;

Para k: = g Para fazer

Início

Se s [i] <s [j] Então

Início

t [k]: = s [i];

i: = i + 1;

Fim

Outro

Início

t [k]: = s [j];

j: = j - 1;

Fim;

Fim;

Fim;

Fim;

Obrigado a Zouari Lazhar por essa dica.

Artigo Anterior Próximo Artigo

Principais Dicas