Únete
a la comunidad
Inscríbete
Haz una pregunta »

Ordenamiento Shell – Recursividad

Mayo 2013


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).

Véase también

Comunidad de asistencia y consejos.

Tri Shell -Recursive-
Tri Shell -Recursive-
Por ZOUARI el 23 de enero de 2008
Shell Sort - ricorsiva -
Shell Sort - ricorsiva -
Por zig@ el 16 de febrero de 2010
Ordenação Shell - recursividade
Ordenação Shell - recursividade
Por pintuda el 11 de marzo de 2010
El artículo original fue escrito por ZOUARI. Traducido por Carlos-vialfa.
Este documento intitulado « Ordenamiento Shell – Recursividad » de Kioskea (es.kioskea.net) esta puesto a diposición bajo la licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta nota sea visible.
Recibe nuestro newsletter

salud.kioskea.net

Pascal - Ordenación por inserción
Desplazar los elementos de una matriz (Rotación) – Recursividad