Título: Tiempo de ejecución Publicado por: xavirus.g6 en 27 Noviembre 2013, 22:31 pm 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 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; } Título: Re: Tiempo de ejecución Publicado por: ivancea96 en 27 Noviembre 2013, 23:35 pm Ponlo entre las etiquetas
Código: para que sea más legible. Título: Re: Tiempo de ejecución Publicado por: erest0r en 28 Noviembre 2013, 04:27 am No se por qué, pero cuando veo que las letras se van haciendo mas pequeñas me causa mucha gracia :D
Título: Re: Tiempo de ejecución Publicado por: Vaagish en 28 Noviembre 2013, 05:26 am Haa no no.. jajaja
Suerte! |