Autor
|
Tema: ayuda con el shell sort c++ (Leído 8,964 veces)
|
gibranini
Desconectado
Mensajes: 41
|
hola estoy tratando de hacer el método de ordenamiento Shell Sort pero cuando lo ejecuto no me ordena nada y sigue igual, 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
Mensajes: 61
|
fact = 3/4;
Probablemente te esté dando 0. fact = (float) 3/4;
El algoritmo así visto por encima parece correcto.
|
|
|
En línea
|
|
|
|
gibranini
Desconectado
Mensajes: 41
|
fact = 3/4;
Probablemente te esté dando 0. fact = (float) 3/4;
El algoritmo así visto por encima parece correcto. entonces poniendo fact = (float) 3/4;
deberia funcionar? por que sigue sin ordenar
|
|
|
En línea
|
|
|
|
kutcher
Desconectado
Mensajes: 53
|
Hola gibranini los números 3, 4, 6 de donde los sacaste
Saludos..
|
|
|
En línea
|
|
|
|
gibranini
Desconectado
Mensajes: 41
|
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
Mensajes: 190
|
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:void shell_sort (int *arreglo, int n) { int i, j, aux, inc; inc = n/2-1; while(inc > 0) { i = 0; while(i < n) { j = i, aux = arreglo[i]; while (j >= inc && arreglo[j-inc] > aux) { arreglo[j] = arreglo[j-inc]; j = j-inc; } arreglo[j] = aux, i++; } inc = inc/2; } }
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
Mensajes: 61
|
entonces poniendo fact = (float) 3/4;
deberia funcionar? por que sigue sin ordenar Sí que lo ordena. $ gcc shellsort.c -o shellsort $ ./shellsort 3 34 1 53 15 6 9 1 3 6 9 15 34 53
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Sí que lo ordena. $ gcc shellsort.c -o shellsort $ ./shellsort 3 34 1 53 15 6 9 1 3 6 9 15 34 53
Totalmente de acuerdo con A.I. : 3 34 1 53 15 6 9 1 3 6 9 15 34 53 Process returned 0 (0x0) execution Press any key to continue.
¡¡¡¡ Saluditos! ..... !!!!
|
|
|
En línea
|
|
|
|
gibranini
Desconectado
Mensajes: 41
|
Sí que lo ordena. $ gcc shellsort.c -o shellsort $ ./shellsort 3 34 1 53 15 6 9 1 3 6 9 15 34 53
tienes razon gracias, pero me puedes explicar por que razo se necesitaba poner el (float), porfavor
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
tienes razon gracias, pero me puedes explicar por que razo se necesitaba poner el (float), porfavor Porque como tan acertadamente te comentó A.I. 3/4 es una división entre enteros con lo que el resultado es cero: fact = 3/4 = 0
Puedes evitarlo como te dijo A.I. : fact = (float) 3/4 = 0.75
O más simple: 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
algoritmo radix sort en java
Java
|
Bleach@lex
|
2
|
31,421
|
2 Diciembre 2009, 06:41 am
por Bleach@lex
|
|
|
Sort Array in Java
Java
|
Shell Root
|
5
|
6,116
|
7 Noviembre 2010, 01:48 am
por egyware
|
|
|
Ayuda con shell sort en ArrayList
Java
|
cache264
|
1
|
4,817
|
5 Diciembre 2010, 01:39 am
por Casidiablo
|
|
|
[Perl] Función sort
Scripting
|
Caster
|
2
|
2,367
|
31 Diciembre 2013, 18:49 pm
por Caster
|
|
|
Merge sort en C++
Programación C/C++
|
BitsPuke
|
0
|
2,992
|
7 Diciembre 2014, 13:14 pm
por BitsPuke
|
|