Mensaje del debate
Un conflicto interminable con la prueba de escritorio y el shellSort
MIME-Version: 1.0
Message-ID: <fbf63d51-1977-4903-bb34-1f739966a728@e67g2000hsc.googlegroups.com>
Date: Tue, 4 Dec 2007 10:46:21 -0800 (PST)
Received: by 10.100.177.15 with SMTP id z15mr335066ane.1196793981923; Tue, 04
Dec 2007 10:46:21 -0800 (PST)
X-IP: 190.42.25.67
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET
CLR 1.1.4322; .NET CLR 2.0.50727),gzip(gfe),gzip(gfe)
Subject: Un conflicto interminable con la prueba de escritorio y el shellSort
From: sAfOrAs <dsafor...@gmail.com>
To: "=?ISO-8859-1?Q?Somos_C=F3digo_Libre?=" <somoscodigolibre@googlegroups.com>
Content-Type: text/plain; charset=ISO-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Como andan todos, a continuaci=F3n les presento este c=F3digo 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=E9todo shell, pero con algunos artificios
como el de la linea: <code>for(inc =3D 1 ; inc<n;inc=3Dinc*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=E1n 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=F3digo para que lo revisen.
la libreria est=E1 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 =3D 1 ; inc<n;inc=3Dinc*3+1);
while (inc > 0)
{
for (i=3Dinc; i < n; i++)
{
j =3D i;
temp =3D A[i];
while ((j >=3D inc) && (A[j-inc] > temp))
{
A[j] =3D A[j - inc];
j =3D j - inc;
}
A[j] =3D temp;
}
inc/=3D 2;
}
}
void main ()
{
int A[largo],n;
do{
cout<<"Cantidad de numeros a ingresar: ";cin>>n;
if(n<=3D0||n>largo)
cout<<"Debe ingresar un valor > a 0 y < a "<<largo<<endl;
}while(n<=3D0||n>largo);
leeCadena(n,A);
ordenShell(A,n);
muestraCadena(n,A);
}