PDA

Ver la versión completa : Quien es capaz de realizar este ordenamiento (no importa el lenguaje) ¡¡Pagare!!



.FF
31-03-2009, 22:52
Epales amigos, en la univ me mandaraon hacer un trabajo que debo entregar de forma textual es decir impreso.. bueno la cuestion es que dispongo de poco tiempo y poco conocimiento del tema, el trabajo me es sumamente importante pasarlo ya que vale 30% de la nota final y muchos lo han mandodo hacer con profesores y otros no saben que hacer aun.
Ah y de paso es para entregarlo este jueves 02-04-2009 es por ello que a quien me ayude estoy dispuesto agradecerle infinitamente y de ser necesario le pagere con un dominio .com privado por 1 año o si es de venezuela con una tarjeta de saldo celular.

El problema es el siguiente y lo copiare exactamente como lo paso el profesor:

-------------------------------------------------------------------------------------------
Un requerimiento muy comun de un sistema de informacion es el ordenamiento de archivos. Los archivos de transacciones deben ordenarse para realizar una actualizacion mas eficiente de los archivos maestros secuenciales; los datos de la salida deben ordenarse para obtener un formato adecuado en la generacion de reportes secuenciales. El uso de metodos de ordenamiento eficientes puede ser importante para el completo desempeño de una instalacion de computo y de un sistema de informacion. Igualmente es muy importante estudiar las tecnicas para encontrar valores de datos particulares en una estructura, es decir, lo que se conoce con el nombre de tecnicas de busqueda.

EN FUNCION DE LO ANTES EXPUESTO SE PIDE ENTONCES:

Dado el siguiente vector compuesto de 25 numeros:
915, -2, 102, -4, 800, 17, 450, 313, 9, 501, 308, 1, 109, 22, 3, 41, 215, 14, 312, 25, 200, 8, 320, 500

Realizar un programa en el lenguaje de su preferencia que permita ordenarlo utilizando el metodo conocido como Shell sort Shell sorty por medio de la tecnica de busqueda binaria encontrar el valor 500

Alumno este trabajo debe ser entregado con un informe que contenga la explicacion de ambos metodos, Diagrama de flujo del programa, Explicacion de variables y Conclusion de lo realizado.
-------------------------------------------------------------------------------------------

j8k6f4v9j
31-03-2009, 23:22
Mira, un ejemplo de función para bash:
(http://smith-li.com/sort.bash)

shellsort() {
SORTEDARRAY=("$@")
local shell i j t
for (( shell=1; shell<${#SORTEDARRAY[@]}; 1 )); do
(( shell=2*shell+1 )) # Just let the shell grow.
done

while [[ 1 ]]; do
(( shell=(shell-1)/2 ))
for (( i=shell; i<${#SORTEDARRAY[@]}; i++)); do
for (( j=i-shell; j>=0; j-=shell )); do
(( SORTEDARRAY[j] > SORTEDARRAY[j+shell] )) || break
t="${SORTEDARRAY[j]}"
SORTEDARRAY[j]="${SORTEDARRAY[j+shell]}"
SORTEDARRAY[j+shell]="$t"
done
done
(( shell > 1 )) || break
done
}


En C, sería así:



shellsort(itemType a[], int l, int r)
{ int i, j, k, h; itemType v;
int incs[24] = { 915, -2, 102, -4, 800, 17, 450, 313, 9, 501, 308, 1, 109, 22, 3, 41, 215, 14, 312, 25, 200, 8, 320, 500 };
for ( k = 0; k < 24; k++)
for (h = incs[k], i = l+h; i <= r; i++)
{
v = a[i]; j = i;
while (j >= h && a[j-h] > v)
{ a[j] = a[j-h]; j -= h; }
a[j] = v;
}
}


Salu2

.FF
31-03-2009, 23:30
Primera vez que oigo ese "Bash"

y que diferencia hay entre ese codigo de C a este:


#include <stdio.h>
#define TAM 25

void shellsort(int v[], int n);

int main ()
{
int indice;
int vector[TAM] = {
915, -2, 102, -4, 800,
17, 450, 313, 9, 501,
308, 1, 109, 22, 3,
41, 215, 14, 312, 25,
200, 8, 320, 500
};

printf("Desordenados:\n");
for (indice=0;indice<TAM;indice++)
{
printf("%d\n",vector[indice]);
}

shellsort(vector,TAM);

printf("Ordenados:\n");
for (indice=0;indice<TAM;indice++)
{
printf("%d\n",vector[indice]);
}


getchar();

return (0);

}

/* shellsort: ordena v[0]...v[n-1] en orden ascendente */
void shellsort(int v[], int n)
{
int gap;
int i;
int j;
int temp;

for (gap=n/2;gap>0;gap/=2)
for (i=gap;i<n;i++)
for (j=i-gap;j>=0&&v[j]>v[j+gap];j-=gap)
{
temp=v[j];
v[j]=v[j+gap];
v[j+gap]=temp;
}
}Que hace el que tu me diste y que extra hace este... :0=

Giskard
01-04-2009, 00:43
Primera vez que oigo ese "Bash"

y que diferencia hay entre ese codigo de C a este...

Que hace el que tu me diste y que extra hace este... :0=

Pues ya tienes los codigos fuente, para saber lo que hacen haz una corrida de escritorio (con una hoja de papel y lapiz). Aprender a leer código te ayudará mucho en la programación.

Saludos.

.FF
08-04-2009, 21:32
A que te refieres con esto??
haz una corrida de escritorio (con una hoja de papel y lapiz)

hystd
08-04-2009, 21:36
a que hagas una traza del programa manualmente...

.FF
08-04-2009, 21:38
Estoy mas nulo :| eso me pasa por faltar tanto a clase :P aun siento que me hablan en chino

Giskard
09-04-2009, 00:17
Estoy mas nulo :| eso me pasa por faltar tanto a clase :P aun siento que me hablan en chino

Como dice hystd, tomas una hoja de papel, escribes los nombres de las variables y vas ejecutando cada una de las instrucciones como si tu fueras el ordenador, anotando los cambios en los valores de las variables, puedes ayudarte con dibujitos o cualquier representacion gráfica que se te ocurra, eso ayuda mucho.

Saludos.