| |
Somos Código Libre - C++ |
Como andan todos, a continuación les presento este código que fue
#include<iostream>
int i, j, inc, temp;
for(inc = 1 ; inc<n;inc=inc*3+1);
while (inc > 0)
A[j] = temp;
inc/= 2;
leeCadena(n,A);
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"leearreglo.h"
using namespace std;
#define largo 50
void ordenShell(int A[],int n)
{
{
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;
}
}
}
{
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);
ordenShell(A,n);
muestraCadena(n,A);