Ir a la página principal de Grupos de Google    Somos Código Libre - C++
Un conflicto interminable con la prueba de escritorio y el shellSort

sAfOrAs <dsafor...@gmail.com>

Como andan todos,  a continuación les presento este código que fue
modificado en parte por unos amigos y yo, queriamos enternder el
algoritmo, pese a que el c{odigo funciona perfectamente... Se trata de
un ordenamiento basado en el método shell, pero con algunos artificios
como el de la linea:   <code>for(inc = 1 ; inc<n;inc=inc*3+1);</code>,
donde el inc incrementa acabada la ejecucion del algoritmo interno,
pese a ello, al hacer la prueba de escritorio parece que el programa
no tuviera un fin (se darán cuenta si lo hacen), o en todo caso a
pique que no me estoy dando cuenta del error que estoy cometiendo, de
todas maneras les paso el código para que lo revisen.
la libreria está en los repositorios...

#include<iostream>
#include"leearreglo.h"
using namespace std;
#define largo 50
void ordenShell(int A[],int n)
{

  int i, j, inc, temp;

  for(inc = 1 ; inc<n;inc=inc*3+1);

          while (inc > 0)
          {
                  for (i=inc; i < n; i++)
                  {
                                j = i;
                                temp = A[i];
                                while ((j >= inc) && (A[j-inc] > temp))
                                {
                                        A[j] = A[j - inc];
                                        j = j - inc;
                                }

                                A[j] = temp;
                  }

                  inc/= 2;
          }

}

void main ()
{
    int A[largo],n;
        do{
        cout<<"Cantidad de numeros a ingresar: ";cin>>n;
                if(n<=0||n>largo)
                        cout<<"Debe ingresar un valor  > a 0 y < a "<<largo<<endl;
        }while(n<=0||n>largo);

    leeCadena(n,A);
    ordenShell(A,n);
    muestraCadena(n,A);

}