Tengo problemas con un programa que calcula el tiempo de ejecución de 4 métodos de ordenación. el error es..."ld returned 1 exit status" el programa es este...
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int o,total;
//////////////////////////
//Metodo 1 BURBUJA//
void _sort4() { /*Ordena por metodo burbuja*/
FILE *archivo;
int z=0;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Burbuja.-\n");
while (z<1){
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// INICIO tiempo
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/
printf("\nArreglo ordenado:\n");
/*Metodo burbuja*/
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
} /*Fin burbuja*/
for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC;
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );
z++;
if(z==1)
{fprintf (archivo, "\nEl promedio del metodo 1 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}
//Metodo 2 SHELLSORT//
void shellsort() {
FILE*archivo;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Shellsort.-\n");
int z=0;
while (z<1)
{
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// Inicio tiempo
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("posicion[%i] cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/
printf("\nArreglo ordenado:\n");
/*Metodo shellsort*/
int mas, aux;
mas = n/2;
while (mas > 0)
{
for (i=mas; i < n; i++)
{
j = i;
aux = a;
while ((j >= mas) && (a[j-mas] > aux))
{
a[j] = a[j - mas];
j = j - mas;
}
a[j] = aux;
}
mas /= 2;
}
/*Fin shellsort*/
for(i=0;i<n;i++)
{
printf("Posicion %i Cifra %i \n ",i,a);
}
final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo, "%f",&total );
fprintf (archivo, "\n%f",total );
z++;
if(z==1000)
{fprintf (archivo, "\nEl promedio del metodo 2 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
system("pause");
fclose(archivo);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Método Quick Sort
void quicksort () {
FILE*archivo;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Quicksort.-\n");
int z=0;
while (z<1)
{
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// Inicio tiempo
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/
printf("\nArreglo ordenado:\n");
/* Metodo quicksort*/
void quick(int A[n],int inf, int sup){
int elem_div = A;
int temp ;
int i = inf - 1 , j = sup;
int cont = 1;
if (inf >= sup)
return;
while (cont)
{
while (A[++i] < elem_div);
while (A[--j] > elem_div);
if (i < j)
{
temp = A;
A = A[j];
A[j] = temp;
}
else
cont = 0;
}
temp = A;
A = A;
A = temp;
quick (A, inf, i - 1);
quick (A, i + 1, sup);
}
// fin metodo quicksort
for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );
z++;
if(z==1000)
{fprintf (archivo, "\nEl promedio del metodo 3 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Metodo 4 HEAPSORT//
void Heapsort() { /*Ordena por metodo Heapsort*/
FILE *archivo;
int z=0;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo heapsort.-\n");
while (z<1){
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// INICIO TIEMPO
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/
printf("\nArreglo ordenado:\n");
/*Metodo Heapsort*/
int I, s, f, ivalue,N ;
for ( I = N - 1 ; I > 0 ; I-- )
{
ivalue = a ;
a = a[0] ;
f = 0 ;
if ( I == 1 )
s = -1 ;
else
s = 1 ;
if ( I > 2 && a[2] > a[1] )
s = 2 ;
while ( s >= 0 && ivalue < a )
{
a[f] = a ;
f = s ;
s = 2 * f + 1 ;
if ( s + 1 <= I - 1 && a < a[s + 1] )
s++ ;
if ( s > I - 1 )
s = -1 ;
}
a[f] = ivalue ;
} /*Fin Heapsort*/
for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin Tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total transcurrido
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );
z++;
if(z==1)
{fprintf (archivo, "\nEl promedio del metodo 1 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main() {
printf("\n\t1.-\tMetodo Burbuja\n");
printf("\t2.-\tMetodo Shellsort\n");
printf("\t3.-\tMetodo Quicksort\n");
printf("\t4.-\tMetodo heapsort\n");
printf("\t5.-\tSalida\n");
printf("\n\tEscoja una opcion=> ");
scanf("%d",&o);
while (o!=5){
switch (o)
{
case 1: _sort4 ();
break;
case 2: shellsort();
break;
case 3: quicksort ();
break;
case 4: heapsort ();
break;
}
printf("\n\t1.-\tMetodo Burbuja\n");
printf("\t2.-\tMetodo Shellsort\n");
printf("\t3.-\tMetodo Quicksort\n");
printf("\t4.-\tMetodo heapsort\n");
printf("\t5.-\tSalir\n");
printf("\tEscoja una opcion=> ");
scanf("%d",&o);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int o,total;
//////////////////////////
//Metodo 1 BURBUJA//
void _sort4() { /*Ordena por metodo burbuja*/
FILE *archivo;
int z=0;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Burbuja.-\n");
while (z<1){
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// INICIO tiempo
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/
printf("\nArreglo ordenado:\n");
/*Metodo burbuja*/
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
} /*Fin burbuja*/
for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC;
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );
z++;
if(z==1)
{fprintf (archivo, "\nEl promedio del metodo 1 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}
//Metodo 2 SHELLSORT//
void shellsort() {
FILE*archivo;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Shellsort.-\n");
int z=0;
while (z<1)
{
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// Inicio tiempo
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("posicion[%i] cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/
printf("\nArreglo ordenado:\n");
/*Metodo shellsort*/
int mas, aux;
mas = n/2;
while (mas > 0)
{
for (i=mas; i < n; i++)
{
j = i;
aux = a;
while ((j >= mas) && (a[j-mas] > aux))
{
a[j] = a[j - mas];
j = j - mas;
}
a[j] = aux;
}
mas /= 2;
}
/*Fin shellsort*/
for(i=0;i<n;i++)
{
printf("Posicion %i Cifra %i \n ",i,a);
}
final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo, "%f",&total );
fprintf (archivo, "\n%f",total );
z++;
if(z==1000)
{fprintf (archivo, "\nEl promedio del metodo 2 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
system("pause");
fclose(archivo);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Método Quick Sort
void quicksort () {
FILE*archivo;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo Quicksort.-\n");
int z=0;
while (z<1)
{
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// Inicio tiempo
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/
printf("\nArreglo ordenado:\n");
/* Metodo quicksort*/
void quick(int A[n],int inf, int sup){
int elem_div = A;
int temp ;
int i = inf - 1 , j = sup;
int cont = 1;
if (inf >= sup)
return;
while (cont)
{
while (A[++i] < elem_div);
while (A[--j] > elem_div);
if (i < j)
{
temp = A;
A = A[j];
A[j] = temp;
}
else
cont = 0;
}
temp = A;
A = A;
A = temp;
quick (A, inf, i - 1);
quick (A, i + 1, sup);
}
// fin metodo quicksort
for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );
z++;
if(z==1000)
{fprintf (archivo, "\nEl promedio del metodo 3 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Metodo 4 HEAPSORT//
void Heapsort() { /*Ordena por metodo Heapsort*/
FILE *archivo;
int z=0;
archivo = fopen("tiemposext.txt", "a");
fprintf(archivo, "\nMetodo heapsort.-\n");
while (z<1){
long RandInt(long li, long ls) /*Comienza a generar los 1.000 elementos aleatorios*/
{
return rand( ) % (ls-li+1)+li;
}
float total,inicio, final,ttotal;
inicio=clock();// INICIO TIEMPO
int i,n=1000,a[n],j,temp=0;
printf("\nArreglo sin ordenar:\n");
for(i=0;i<n; i++)
{
a=RandInt(0, 10000);
printf("Posicion %i Cifra:%i \n",i,a);
} /*Termina de generar los 1.000 elementos aleatorios*/
printf("\nArreglo ordenado:\n");
/*Metodo Heapsort*/
int I, s, f, ivalue,N ;
for ( I = N - 1 ; I > 0 ; I-- )
{
ivalue = a ;
a = a[0] ;
f = 0 ;
if ( I == 1 )
s = -1 ;
else
s = 1 ;
if ( I > 2 && a[2] > a[1] )
s = 2 ;
while ( s >= 0 && ivalue < a
{
a[f] = a
f = s ;
s = 2 * f + 1 ;
if ( s + 1 <= I - 1 && a
s++ ;
if ( s > I - 1 )
s = -1 ;
}
a[f] = ivalue ;
} /*Fin Heapsort*/
for(i=0;i<n; i++)
{
printf("Posicion %i Cifra :%i \n ",i,a);
}
final=clock(); // Fin Tiempo
total=(final-inicio)/(double) CLOCKS_PER_SEC; // Tiempo total transcurrido
printf("\n\nEl Tiempo es: %f\n",total );
ttotal = ttotal + total/1000;
fscanf (archivo,"%f",&total );
fprintf (archivo,"\n%f",total );
z++;
if(z==1)
{fprintf (archivo, "\nEl promedio del metodo 1 es: %f ",ttotal );
}
}
fprintf(archivo,"\n");
system("clear");
fclose(archivo);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main() {
printf("\n\t1.-\tMetodo Burbuja\n");
printf("\t2.-\tMetodo Shellsort\n");
printf("\t3.-\tMetodo Quicksort\n");
printf("\t4.-\tMetodo heapsort\n");
printf("\t5.-\tSalida\n");
printf("\n\tEscoja una opcion=> ");
scanf("%d",&o);
while (o!=5){
switch (o)
{
case 1: _sort4 ();
break;
case 2: shellsort();
break;
case 3: quicksort ();
break;
case 4: heapsort ();
break;
}
printf("\n\t1.-\tMetodo Burbuja\n");
printf("\t2.-\tMetodo Shellsort\n");
printf("\t3.-\tMetodo Quicksort\n");
printf("\t4.-\tMetodo heapsort\n");
printf("\t5.-\tSalir\n");
printf("\tEscoja una opcion=> ");
scanf("%d",&o);
}
return 0;
}