elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con el shell sort c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con el shell sort c++  (Leído 8,483 veces)
gibranini

Desconectado Desconectado

Mensajes: 41


Ver Perfil
ayuda con el shell sort c++
« en: 2 Agosto 2014, 05:40 am »

hola estoy tratando de hacer el método de ordenamiento Shell Sort pero cuando lo ejecuto no me ordena nada y sigue igual,

Código:
int arreglo[7]={3, 34, 1, 53, 15, 6, 9};
    int i, dif, aux;
    float fact;

    fact= 3/4;
    dif= 6 * fact;

    while(dif > 0)
    {
        i= 0;
        while(i <= 6-dif)
        {
            if(arreglo[i] > arreglo[i+dif])
            {
                aux=arreglo[i];
                arreglo[i]=arreglo[i+dif];
                arreglo[i+dif]=aux;
            }

            i++;
        }
        dif=dif * fact;
    }


En línea

A.I.

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #1 en: 2 Agosto 2014, 10:56 am »

Código
  1. fact = 3/4;

Probablemente te esté dando 0.

Código
  1. fact = (float) 3/4;

El algoritmo así visto por encima parece correcto.


En línea

gibranini

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #2 en: 2 Agosto 2014, 23:55 pm »

Código
  1. fact = 3/4;

Probablemente te esté dando 0.

Código
  1. fact = (float) 3/4;

El algoritmo así visto por encima parece correcto.

entonces poniendo

Código
  1. fact = (float) 3/4;

deberia funcionar? por que sigue sin ordenar :-(
En línea

kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #3 en: 3 Agosto 2014, 02:01 am »

Hola gibranini los números 3, 4, 6 de donde los sacaste

Saludos..
En línea

gibranini

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #4 en: 3 Agosto 2014, 03:04 am »

el 3/4, lo hice para dividir el arreglo y asi comparar/ordenar por separado, y el 6 es el tamaño del arreglo -1
En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #5 en: 3 Agosto 2014, 03:33 am »

hola estoy tratando de hacer el método de ordenamiento Shell Sort pero cuando lo ejecuto no me ordena nada y sigue igual,

Trato de respetar lo máximo posible la estructura de tu código:
 
Edito:

Código
  1. void shell_sort (int *arreglo, int n)
  2. {
  3.    int i, j, aux, inc;
  4.    inc = n/2-1;
  5.  
  6.    while(inc > 0)
  7.    {
  8.        i = 0;
  9.        while(i < n)
  10.        {
  11.            j = i, aux = arreglo[i];
  12.            while (j >= inc && arreglo[j-inc] > aux)
  13.            {
  14.                arreglo[j] = arreglo[j-inc];
  15.                j = j-inc;
  16.            }
  17.            arreglo[j] = aux, i++;
  18.        }
  19.        inc = inc/2;
  20.    }
  21. }

Edite el código anterior ya que me di cuenta de un error
« Última modificación: 3 Agosto 2014, 04:21 am por Blaster » En línea

A.I.

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #6 en: 3 Agosto 2014, 04:39 am »

entonces poniendo

Código
  1. fact = (float) 3/4;

deberia funcionar? por que sigue sin ordenar :-(

Sí que lo ordena.

Código
  1. $ gcc shellsort.c -o shellsort
  2. $ ./shellsort
  3. 3 34 1 53 15 6 9
  4. 1 3 6 9 15 34 53

En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #7 en: 3 Agosto 2014, 04:45 am »

Sí que lo ordena.

Código
  1. $ gcc shellsort.c -o shellsort
  2. $ ./shellsort
  3. 3 34 1 53 15 6 9
  4. 1 3 6 9 15 34 53


Totalmente de acuerdo con A.I. :

Código
  1. 3   34    1   53   15    6    9
  2. 1    3    6    9   15   34   53
  3.  
  4. Process returned 0 (0x0)   execution
  5. Press any key to continue.

¡¡¡¡ Saluditos! ..... !!!!


En línea

gibranini

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #8 en: 3 Agosto 2014, 23:15 pm »

Sí que lo ordena.

Código
  1. $ gcc shellsort.c -o shellsort
  2. $ ./shellsort
  3. 3 34 1 53 15 6 9
  4. 1 3 6 9 15 34 53



tienes razon :) gracias, pero me puedes explicar por que razo se necesitaba poner el (float), porfavor :D ;D
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: ayuda con el shell sort c++
« Respuesta #9 en: 3 Agosto 2014, 23:52 pm »

tienes razon :) gracias, pero me puedes explicar por que razo se necesitaba poner el (float), porfavor :D ;D

Porque como tan acertadamente te comentó A.I. 3/4 es una división entre enteros con lo que el resultado es cero:

Código
  1. fact = 3/4 =  0

Puedes evitarlo como te dijo A.I. :

Código
  1. fact = (float) 3/4 =  0.75

O más simple:

Código
  1. fact =  3./4 = 0.75

Fíjate en la presencia del punto decimal en el tres que indica que se va a realizar una operación entre números en flotante.

¡¡¡¡ Saluditos! ..... !!!!


« Última modificación: 4 Agosto 2014, 04:06 am por leosansan » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
algoritmo radix sort en java
Java
Bleach@lex 2 31,081 Último mensaje 2 Diciembre 2009, 06:41 am
por Bleach@lex
Sort Array in Java
Java
Shell Root 5 5,571 Último mensaje 7 Noviembre 2010, 01:48 am
por egyware
Ayuda con shell sort en ArrayList
Java
cache264 1 4,695 Último mensaje 5 Diciembre 2010, 01:39 am
por Casidiablo
[Perl] Función sort
Scripting
Caster 2 2,159 Último mensaje 31 Diciembre 2013, 18:49 pm
por Caster
Merge sort en C++
Programación C/C++
BitsPuke 0 2,827 Último mensaje 7 Diciembre 2014, 13:14 pm
por BitsPuke
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines