metodo de ordenacion radix
necesito ayuda alguien que me pudiera proporcional algun programa en c con el metodo de ordenacion radix
gracias se los voy a agradecer
gracias se los voy a agradecer
Estimada Sandra, aqui va el programa de ordenacion por el metodo Radix
// program k4_12.CPP - page 73
// radix sort.
// c++ exercices book - dr. gershon kagan (first edition : 2001)
// written in Borland CPP ver 3.1
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#define MAX 18
#define MAX_DIGIT 3
void Show(int *a)
{
for(int i = 0; i < MAX; i++)
cout << setw(4) << a[i];
cout << endl;
} // SHOW
void Init(int *a)
{
for(int i = 0; i < MAX; i++)
a[i] = random(999) + 1;
} // INIT
void Swap(int &a,int &b)
{
int c = a;
a = b;
b = c;
} // SWAPS INTEGER
void RadixSort(int *a) // for integer values MAX_DIGIT lenght
{
int aux[10][MAX],index[MAX];
for(int i = 0; i < 10; i++)
{
index[i] = 0;
for(int j = 0; j < MAX; j++)
aux[i][j] = 0;
}
for(int z = 0; z < MAX_DIGIT; z++)
{
for(i = 0; i < MAX; i++)
{
int digit = a[i];
for(int x = z; x; x--)
digit /= 10;
digit %= 10;
aux[digit][index[digit]++] = a[i];
}
int k = 0;
for(i = 0; i < 10; i++)
{
int j = 0;
while(aux[i][j])
{
a[k++] = aux[i][j];
aux[i][j++] = 0;
}
index[i] = 0;
}
Show(a);
}
cout << endl;
} // RADIX SORT
void main()
{
clrscr();
randomize();
int a[MAX];
cout << "radix sort : " << endl << endl;
Init(a);
Show(a);
cout << endl;
RadixSort(a);
Show(a);
cout << endl << "end of program - good bye ! ! !n";
getch();
} // MAIN
// program k4_12.CPP - page 73
// radix sort.
// c++ exercices book - dr. gershon kagan (first edition : 2001)
// written in Borland CPP ver 3.1
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#define MAX 18
#define MAX_DIGIT 3
void Show(int *a)
{
for(int i = 0; i < MAX; i++)
cout << setw(4) << a[i];
cout << endl;
} // SHOW
void Init(int *a)
{
for(int i = 0; i < MAX; i++)
a[i] = random(999) + 1;
} // INIT
void Swap(int &a,int &b)
{
int c = a;
a = b;
b = c;
} // SWAPS INTEGER
void RadixSort(int *a) // for integer values MAX_DIGIT lenght
{
int aux[10][MAX],index[MAX];
for(int i = 0; i < 10; i++)
{
index[i] = 0;
for(int j = 0; j < MAX; j++)
aux[i][j] = 0;
}
for(int z = 0; z < MAX_DIGIT; z++)
{
for(i = 0; i < MAX; i++)
{
int digit = a[i];
for(int x = z; x; x--)
digit /= 10;
digit %= 10;
aux[digit][index[digit]++] = a[i];
}
int k = 0;
for(i = 0; i < 10; i++)
{
int j = 0;
while(aux[i][j])
{
a[k++] = aux[i][j];
aux[i][j++] = 0;
}
index[i] = 0;
}
Show(a);
}
cout << endl;
} // RADIX SORT
void main()
{
clrscr();
randomize();
int a[MAX];
cout << "radix sort : " << endl << endl;
Init(a);
Show(a);
cout << endl;
RadixSort(a);
Show(a);
cout << endl << "end of program - good bye ! ! !n";
getch();
} // MAIN
Oye noel, el programa radix que es lo que en si trata de hacer es que la verdad no se mucho de programacion, pero tengo una exposicion sobre el radix y si me podrias decir mas o menos que es lo que hace, ok. ya lo corri el que mandaste pero me apoarecen tres errores se los quite y me aparecen ceros y unos. algo asi como 10001
Con cualquier compilador que no este obsoleto (que produzca codigo de 32 bits).
Mi estimado Adalid:
El metodo radix, para numeros positivos, trabaja se la siguiente manera:
[a] : en la primera pasada dividimos el array en 10 grupos, de acuerdo a la cifra de las unidades.
Colocamos los grupos de vuelta al array, obteniendo en primera instancia una ordenacion de acuerdo a la ultima cifra de los numeros : primero todo los que terminan en 0, luego los terminados en 1, etc,etc.
[2] : volvemo al array, realizando el p rocedemiento para la segunda cifra significativa.
[3] : Y asi seguimos, con la tercera,cuarta, quinta, etc.
de acuerdo a tipo de integral que utilizamos.
Para int alcanzan 5 lugares.
Espero haber sido suficientemente claro. Si te quedan dudas, pregunta por favor.
Una pregunta : con que compilador trabajas que se
producieron tantos errores ?
El metodo radix, para numeros positivos, trabaja se la siguiente manera:
[a] : en la primera pasada dividimos el array en 10 grupos, de acuerdo a la cifra de las unidades.
Colocamos los grupos de vuelta al array, obteniendo en primera instancia una ordenacion de acuerdo a la ultima cifra de los numeros : primero todo los que terminan en 0, luego los terminados en 1, etc,etc.
[2] : volvemo al array, realizando el p rocedemiento para la segunda cifra significativa.
[3] : Y asi seguimos, con la tercera,cuarta, quinta, etc.
de acuerdo a tipo de integral que utilizamos.
Para int alcanzan 5 lugares.
Espero haber sido suficientemente claro. Si te quedan dudas, pregunta por favor.
Una pregunta : con que compilador trabajas que se
producieron tantos errores ?
necesito información sobre el metodo radix sort, toda la que tengan aplicado sobre C#
Gracias quedaré muy agradecida
Gracias quedaré muy agradecida
