Código C++ – Ordenamiento Shell

// Ordenamiento Shell
// Codificado por Beastieux

#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;
    }
}

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

    return 0;
}

18 thoughts on “Código C++ – Ordenamiento Shell

  1. funciona correctamente si acomodamos bien las 2 funciones que tiene. pero lo que no entiendo es: #include «leearreglo.h» como funciona???

    1. #include
      using namespace std;
      #define largo 50
      void ordenShell(int A[],int n)
      {
      int i, j, inc, temp;
      for(inc = 1 ; inc 0)
      {
      for (i=inc; i = inc) && (A[j-inc] > temp))
      {
      A[j] = A[j – inc];
      j = j – inc;
      }

      A[j] = temp;
      }
      inc/= 2;
      }
      }
      void leeCadena(int cant,int n[])
      {
      int i;
      for(i=0;i<cant;i++)
      {
      cout<<"Ingresa numero "<<i+1<>n[i];
      }

      }

      void muestraCadena(int cant,int n[])
      {
      int i;
      for(i=0;i<cant;i++)
      {
      cout<<n[i]<<" ";
      }
      }

      int main ()
      {
      int A[largo],n;
      do{
      cout<>n;
      if(nlargo)
      cout< a 0 y < a "<<largo<<endl;
      }while(nlargo);

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

  2. Sii, marca error al implementarlo en Dev C++ por que, otra cosa, por que cortas la linea de programación e inicias una vez mas con iostream dentro del mismo programa eso no lo entendí, despues de la linea 47??

    1. yo se que pasa
      si te fijas al principo del programa tiene una libreria que se llama como enpieza el segundo programa, el segundo programa lo deves de guardar como libreria en la misma carpeta donde guardaste el programa principal, cuando copies el programa principal no copies la segunda parte y ya funciona normal

  3. Buena tarde
    Soy novato en el uso de pcbsd 9.1, lo he instalado en una lap top gateway ID59C, particionando el disco duro, se instalo muy bien pero al momento de usar la funcion inalambrica simplemente no funciona, de igual forma lo intente con un smartphone pero ni siguiera lo detecto.
    Podrian sugerir alguna forma de hacer que funcione el inalambrico?

Deja un comentario