Foros del Web » Creando para Internet » Flash y Actionscript »

Ordenamiento shell en actionscript

Estas en el tema de Ordenamiento shell en actionscript en el foro de Flash y Actionscript en Foros del Web. Por Favor si Alguien puede ayudarme necesito urgentemente el metodo de ordenamiento shell para actionscript, no he logrado hacerlo ni encontrarlo tengo varios otros pero ...
  #1 (permalink)  
Antiguo 26/06/2010, 20:46
 
Fecha de Ingreso: marzo-2009
Mensajes: 35
Antigüedad: 15 años, 2 meses
Puntos: 0
Ordenamiento shell en actionscript

Por Favor si Alguien puede ayudarme necesito urgentemente el metodo de ordenamiento shell para actionscript, no he logrado hacerlo ni encontrarlo tengo varios otros pero este no he logrado hacerlo.

necesito entregar el array y que esta funcion me lo retorne ordenado.
Agradeceria sus ayudas....


  #2 (permalink)  
Antiguo 26/06/2010, 22:42
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 11 meses
Puntos: 95
Respuesta: Ordenamiento shell en actionscript

Voy a Obviar que ya conoces el algoritmo del ordenamiento shell.
Te muestro un código que acabo de generar al vuelo, personalmente desconocía el ordenamiento shell pero no es tan díficl de realizar, con el Algoritmo
Esta hecho en AS3.0

Basicamente el algoritmo del ordenamiento shell dice que:
1. Tu array ordenalo en una tabla, en muestras de tamaño arbitrario (yo empece con una muestra del tamaño de la mitad de los elementos de la tabla) y de esa manera lo organizas en una tabla.
2. Vas a ordenar, por metodo de inserción, las columnas de dicha tabla.
3. Vas a reducir el tamaño de la muestra nuevamente y vuelves a organizar el nuevo array por columnas en dicha tabla y repites ese proceso hasta que todos los elementos queden ordenados.

Mi función, en AS3.0, toma como argumentos el array mismo y el tamaño del array, para definir el tamaño de la muestra.
Pero igual, puede tomar como argumento el array y dentro de la función encontrar el tamaño. Debe producir el mismo resultado.

posteriormente, declaro las variables que utilizaré para recorrer el array.
Primero defino el primer tamaño de muestra, diviendo la longitud total del array entre 2.
En mi ejemplo, la longitud de mi array es de 18 elementos.

2,5,6,8,10,2,3,64,23,76,43,27,75,33,23,45,67,89

defino un tamaño de muestra de 9 (18/2)
2, 5, 6, 8,10, 2, 3,64,3
76,43,27,75,33,23,45,67,89

Y ordeno el array por columnas:
2,5,6,8,10,2,3,64,3
76,43,27,75,33,23,45,67,89

En el segundo paso, encuentro que mi incremento es de 9/2 (pero es division entera, entonces hace clausura, y se encuentra tamaño = 5)
2 5 6 8 10
2 3 64 3 76
43 27 75 33 23
45 67 89

Y lo vuelve a hacer, hasta que queda un array completamente ordenado, tomando el tamaño de muestra original diviendolo entre 2, y así hasta que el array quede completamente ordenado, mientras el tamaño de la muestra sea mayor que 0.

finalmente te dejo el código:
Código ActionScript:
Ver original
  1. var arrayOriginal:Array = new Array(2,5,6,8,10,2,3,64,23,76,43,27,75,33,23,45,67,89);
  2. trace("Array desordenado: "+arrayOriginal);
  3. ordenamiento_shell(arrayOriginal,arrayOriginal.length);
  4.  
  5. function ordenamiento_shell(arrayDesordenado:Array, tamano:uint)
  6. {
  7.     var i:uint;
  8.     var j:uint;
  9.     var incremento:uint;
  10.     var temp:uint;
  11.  
  12.     incremento = tamano / 2;
  13.     while (incremento>0)
  14.     {
  15.         for (i=incremento; i<tamano; i++)
  16.         {
  17.             j = i;
  18.             temp = arrayDesordenado[i];
  19.             while ((j >= incremento) && (arrayDesordenado[j-incremento] > temp))
  20.             {
  21.                 arrayDesordenado[j] = arrayDesordenado[j - incremento];
  22.                 j = j - incremento;
  23.             }
  24.             arrayDesordenado[j] = temp;
  25.         }
  26.         incremento = incremento/2;
  27.     }
  28.     trace("Array ordenado: "+arrayDesordenado);
  29. }

Y la salida del programa es:
Array desordenado: 2,5,6,8,10,2,3,64,23,76,43,27,75,33,23,45,67,89
Array ordenado: 2,2,3,5,6,8,10,23,23,27,33,43,45,64,67,75,76,89
  #3 (permalink)  
Antiguo 27/06/2010, 17:33
 
Fecha de Ingreso: marzo-2009
Mensajes: 35
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ordenamiento shell en actionscript

Para Cambiar este codigo a as2 que debria cambiarle?
  #4 (permalink)  
Antiguo 27/06/2010, 19:50
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 11 meses
Puntos: 95
Respuesta: Ordenamiento shell en actionscript

mmmm, me parece que nada.
Si acaso cambia las variable uint, por Number. Debería funcionar correctamente.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:35.