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

miguelcrux <miguelc...@gmail.com>

Guay!, mucho C

On 4 dic, 13:46, sAfOrAs <dsafor...@gmail.com> wrote:

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

> }