Hola, tengo que hacer un algoritmo que ordene N números naturales generados en forma aleatoria. Tiene que ejecutarse para 1000, 10000 y 100000. Escribí un código y al ejecutarlo lo hace sin problemas para 1000 y 10000, pero para 100000 no me muestra el resultado, y no puedo hallar el error.
Si me pueden ayudar se los agradecería. Ah trabajo en un entorno linux, que es una virtualización sobre window.
Acá les dejo el código que escribí:
//Secuencial - OrdenacionSectp5.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
/*Declaración de variables globales*/
unsigned long int MAX=100000;
/*Generar datos*/
void CagarDatos(unsigned long int v[], unsigned long int N)
{
unsigned long int i,j;
int duplicado;
unsigned long int num;
for(i=0; i<N; i++)
{
num=1+rand()%N;
duplicado=0;
for(j=0; j<=i; j++)
{
if(num==v[j])
{
duplicado=1;
break;
}
}
if(duplicado==1)
i--;
else
v=num;
}
}
/*Ordenar Datos de menor a mayor mediante método burbuja*/
void OrdenarDatos(unsigned long int v[], unsigned long int N)
{
unsigned long int i,j;
unsigned long int buffer;
for(i=0; i<N-1; i++)
{
for(j=i+1; j<N; j++)
{
if(v>v[j])
{
buffer=v[j];
v[j]=v;
v=buffer;
}
}
}
}
/*Muestra los datos cargados*/
void MostrarDatos(unsigned long int v[], unsigned long int N)
{
unsigned long int i;
printf("\n============================================");
printf("\nNúmeros cargados:\n ");
for(i=0; i<N; i++)
printf("-%ld", v);
}
/*Principal*/
int main()
{
unsigned long int ordenar[MAX];
time_t inicio, fin;
srand(time(NULL));
CagarDatos(ordenar, MAX);
inicio=time(NULL);
OrdenarDatos(ordenar, MAX);
MostrarDatos(ordenar, MAX);
/*Finalización*/
printf("\n============================================");
printf("\nLa cantidad de datos ordenados es: %ld", MAX);
fin=time(NULL);
printf("\nEl programa ha tardado: %.f segundos", difftime(fin,inicio));
printf("\n=========================================\n\n");
return 0;
}
Si me pueden ayudar se los agradecería. Ah trabajo en un entorno linux, que es una virtualización sobre window.
Acá les dejo el código que escribí:
//Secuencial - OrdenacionSectp5.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
/*Declaración de variables globales*/
unsigned long int MAX=100000;
/*Generar datos*/
void CagarDatos(unsigned long int v[], unsigned long int N)
{
unsigned long int i,j;
int duplicado;
unsigned long int num;
for(i=0; i<N; i++)
{
num=1+rand()%N;
duplicado=0;
for(j=0; j<=i; j++)
{
if(num==v[j])
{
duplicado=1;
break;
}
}
if(duplicado==1)
i--;
else
v=num;
}
}
/*Ordenar Datos de menor a mayor mediante método burbuja*/
void OrdenarDatos(unsigned long int v[], unsigned long int N)
{
unsigned long int i,j;
unsigned long int buffer;
for(i=0; i<N-1; i++)
{
for(j=i+1; j<N; j++)
{
if(v>v[j])
{
buffer=v[j];
v[j]=v;
v=buffer;
}
}
}
}
/*Muestra los datos cargados*/
void MostrarDatos(unsigned long int v[], unsigned long int N)
{
unsigned long int i;
printf("\n============================================");
printf("\nNúmeros cargados:\n ");
for(i=0; i<N; i++)
printf("-%ld", v);
}
/*Principal*/
int main()
{
unsigned long int ordenar[MAX];
time_t inicio, fin;
srand(time(NULL));
CagarDatos(ordenar, MAX);
inicio=time(NULL);
OrdenarDatos(ordenar, MAX);
MostrarDatos(ordenar, MAX);
/*Finalización*/
printf("\n============================================");
printf("\nLa cantidad de datos ordenados es: %ld", MAX);
fin=time(NULL);
printf("\nEl programa ha tardado: %.f segundos", difftime(fin,inicio));
printf("\n=========================================\n\n");
return 0;
}