0
Gracias

Unas palabras de agradecimiento nunca están de más.

Ordenamiento Shell – Recursividad


A continuación veremos un procedimiento recursivo que permite ordenar una matriz de n enteros utilizando el método de Ordenamiento Shell:
Procedure Ordenamiento_Shell_Rec (Var t: TAB; n,h : integer);
Var aux,i : integer;
begin
    If h > 0 Then
    Begin
        If n > h Then
             begin
                  Tri_Shell_Rec (t,n - h,h);
                  If t[n] < t[n - h] Then
                  Begin
                     aux:= t[n];
                     i := n;
                     Repeat                        
                        t[i] := t[i - h];
                        i := i - h;
                     Until (i = h) Or (aux > t[i - h]);
                     t[i] := aux;
                  End;
              End;
        Tri_Shell_Rec (t,n,h Div 3);
    End;
End;


Nota:
Probar este procedimiento con matrices de pequeño tamaño, ya que en caso contrario el numero de llamadas es considerable y se presentará un problema de desborde de la pila (el limite técnico de la recursividad es la memoria).
Se puede aumentar el tamaño de la matriz aumentando el tamaño de la pila (Opción\Compilador\Parámetros de memoria\Tamaño de la pila).
0
Gracias

Unas palabras de agradecimiento nunca están de más.

Haz una pregunta
Nuestros contenidos son redactados en colaboración con expertos del ámbito tecnológico bajo la dirección de Jean-François Pillou, fundador de CCM.net y director digital en el Grupo Figaro. CCM es un sitio de tecnología líder a nivel internacional y está disponible en 11 idiomas.
El documento « Ordenamiento Shell – Recursividad » se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.

0 Comentario