Algoritmoa de busqueda y ordenacion en C hashing y bucket sort en lenguaje C
Publicado por Ale (1 intervención) el 25/03/2014 07:39:49
Algoritmoa de busqueda y ordenacion en C hashing y bucket sort, ayuda urgente.
Valora esta pregunta


0
#include<stdio.h>
#include "exponencial.h"
#define MAX 10
int Arreglo[10][MAX];
int pasadas;
void cubeta(int A[],int );
int cant_pasadas(int);
int mayor(int [],int);
main()
{
int i,j;
int n;
int tem1;
int grande;
int A[MAX];
printf(" cantidad de elementos\n");
scanf("%d",&n);
for(j=0;j<=n-1;j++)
scanf("%d", & A[j]);
for(j=0;j<=n-1;j++)
tem1=A[j];
grande=mayor(A,n);
pasadas=cant_pasadas(grande);
cubeta(A,n);
system("pause");
}
void cubeta(int A[],int x)
{
int i;
int l;
int indice[x][pasadas];
int tem[x][pasadas];
int tem1[x][pasadas];
int tem2;
int j;
int z;
int aux;
int aux1;
int aux2;
aux=0;
aux1=0;
aux2=0;
i=0;
z=0;
void printArray(int Arreglo[][MAX],int);
while(i<=pasadas-1)
{
for(j=0;j<=9;j++)
for(l=0;l<=x-1;++l)
{
if(i==0){
tem[l][i]=A[l];
indice[l][i]=tem[l][i]%10;
//esta es la primera pasada
//Arreglo[indice[l][i]][l]=A[l];
if(indice[l][i]==j){
tem1[l][i]=tem[l][i];
tem1[l][i] /= 10;
indice[l][i+1]=(tem1[l][i]%10);
++aux;
Arreglo[indice[l][i+1]][aux-1]=tem[l][i];
}
}
else if(i<=pasadas && Arreglo[j][l]!=0){
tem[l][i]=Arreglo[j][l];
tem1[l][i]=tem[l][i];
tem1[l][i] /= (power(10,i+1));
indice[l][i+1]=(tem1[l][i]%(power(10,i+1)));
++aux1;
Arreglo[indice[l][i+1]][aux1-1]=tem[l][i];
}
}
++i;
//printf("%d ",i);
}
printArray(Arreglo,x);
}
void printArray(int Arreglo[][MAX],int x)
{
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<=x-1;j++)
printf("%-5d",Arreglo[i][j]);
printf("\n");
}
}
int cant_pasadas(int numero)
{
int num_tem;
int cant_digi=1;
int bandera;
bandera=0;
num_tem = numero;
while (bandera == 0)
{
num_tem /= 10;
printf("\n");
cant_digi++;
if (num_tem >= 0)
if (num_tem <= 9)
bandera = 1;
}
return cant_digi;
// printf("Son %d digitos.\n", cant_digi);
}
int mayor(int A[],int x)
{
int j;
int mayor=0;
//calcule del mayor usado luego en funcion cantidad
for(j=0;j<=x-1;j++){
if(mayor<A[j])
{
mayor=A[j];
}
}
return mayor;
//aqui termina
}
#include<stdio.h>
int power(int,int);
/*main()
{
int x=2,y;
printf("base\n");
scanf("%d",&x);
printf("exponente:entero mayor o igual a 1\n");
scanf("%d",&y);
printf("power(%d,%d):%d\n",x,y,power(2,y));
}*/
int power(int base,int exponente)
{
if(exponente==1)
return base;
else
return base*power(base,exponente-1);
}