⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 in_tmp.c

📁 A order algoritm comparison by the C time(). Comparison beetwen : insort,selection sort,mergesort,
💻 C
字号:
#include <stdio.h>#include <unistd.h>#include <time.h>#include <math.h>#include <unistd.h>#include <time.h>#define TO_MSEC(x)      (1000*(x)/CLOCKS_PER_SEC)#define MAX_ARRAY_LENGTH 100000000#define VERSION          1#define RAND_RANGE_MAX   500000double seed;int calcolaprecisione();int getrip(int n,int precisione);double tempoinsertion(int A[],int la,int rip);void    insort (int array[],int length);void    sort(int A[], int min, int max);int     merge(int A[], int p, int q,int r);//Funzioni veramente rudimentali per l'i/ovoid readArray(int A[], int n);void printArray(int A[], int n);//void int_insertion(int n,long x,int R);//Funzioni per il random;void update_seed();double l_rand_alg();void med_sort(int larray,int ncampioni);void int_insertion(int n,long x,int R);double tempoinsertion(int A[],int la,int rip);int l_int_rand(int n);void randArray(int A[],int range_random,int length_array,int randomize);void printArray(int A[], int n);void copy_array(int a[],int b[],int la,int lb);void med_insort(int larray,int ncampioni,int alg);void times (int larray,int ncampioni);void mergeAB(int c[],int a[], int N,int b[],int M);void optimizationAB(int a[],int l,int r);void optimizationABr(int a[],int b[],int l,int r);void mad_optimus(int larray,int ncampioni);int main(){mad_optimus(20,500);}void times (int larray,int ncampioni){	int progress=0,k,l,i,m;	int tmp[larray];	double tnetto,tlordo,tmedio,ttara,varianza;	double s1=0,s2=0,rip,delta,I_Cmin,I_Cmag;	rip=getrip(larray,5);	for (k=0;k<ncampioni;k++) {		double time1,time2;		int a [larray];//		printf ("%d\n",k);		randArray (a,5000,larray,1);		progress = (int)k*100/500;		time1=clock();		for (i=0;i<rip;i++){		//printf ("%d\n",i);			randArray (a,5,larray,1);			insort(a,larray);		}		 time2=clock();		 tlordo=TO_MSEC(time2 - time1); 	time1=clock();	for (m=0;m<larray;m++)tmp[m]=a[m];       	for(i=0; i<rip; i++ ) randArray (tmp,5,larray,1);	time2=clock();	ttara=TO_MSEC(time2 - time1);	tnetto=(tlordo-ttara)/rip;	s1+=tnetto*tnetto;	s2+=tnetto;	}	tmedio=s2/ncampioni;	varianza=(s1/ncampioni)-(tmedio*tmedio);		delta=1.96*sqrt(varianza/ncampioni);	I_Cmin=tmedio-delta;	I_Cmag=tmedio+delta;	printf ("\n%g,%g,%g,%g,%g",tmedio,varianza,delta, I_Cmin,I_Cmag);}			void mad_optimus(int larray,int ncampioni){        int progress=0,k,rip,l,i,m;        int tmp[larray];        double tnetto,tlordo,tmedio,ttara,varianza;        double s1=0,s2=0,delta,I_Cmin,I_Cmag;        rip=getrip(larray,5);        for (k=0;k<ncampioni;k++) {                double time1,time2;                int a [larray];//              printf ("%d\n",k);                randArray (a,5000,larray,1);                progress = (int)k*100/500;                time1=clock();                for (i=0;i<rip;i++){                //printf ("%d\n",i);                        randArray (a,5,larray,1);                        optimizationAB(a,0,larray);                }                 time2=clock();                 tlordo=TO_MSEC(time2 - time1);        time1=clock();        for (m=0;m<larray;m++)tmp[m]=a[m];        for(i=0; i<rip; i++ ) randArray (tmp,5,larray,1);        time2=clock();        ttara=TO_MSEC(time2 - time1);        tnetto=(tlordo-ttara)/rip;        s1+=tnetto*tnetto;        s2+=tnetto;        }        tmedio=s2/ncampioni;        varianza=(s1/ncampioni)-(tmedio*tmedio);        delta=1.96*sqrt(varianza/ncampioni);        I_Cmin=tmedio-delta;        I_Cmag=tmedio+delta;printf ("\n[*] Results for optimus \n"          "[*] Details : length array :%d, Number of test to reorder %d, Num of rips %d   \n"          "[*]           Medium time : %g, Varianza : %g, Delta :%g  \n"          "[*]           Confidence interval [%g , %g]\n",larray,ncampioni,rip,tmedio,varianza,delta, I_Cmin,I_Cmag);}void mergeAB(int c[],int a[], int N,int b[],int M) {int i,j,k;for (i=0,j=0,k=0;k<N+M;k++) {  if (i==N) { c[k]= b[j++]; continue; }  if (j==M) {  c[k]= a[i++]; continue; } c[k]= (a[j]<b[j]) ? a[i++]: b[j++] ; }}void optimizationAB(int a[],int l,int r) { int i,aux[r]; for (i=0;i<=r;i++) aux[i]=a[i]; optimizationABr(a,aux,l,r);}void optimizationABr(int a[],int b[],int l,int r){ int m=(l+r)/2; if ((r-1)<=10){ insort(a,r); return; } optimizationABr(b,a,l,m); optimizationABr(b,a,m+1,r); mergeAB(a+1,b+1,m-1+1,b+m+1,r-m); }void med_insort(int larray,int ncampioni,int alg){        int a[larray],temp[larray];        clock_t t1=0,t2=0;        double I_C,delta,tlordo,ttara,tnetto,tmedio,varianza,s1=0,s2=0;        int rip=0,k,i,l,z;        randArray(a,500,larray,0);        rip=getrip(larray,5);        for(l=0;l<larray;l++)a[l]=temp[l];        for(k=0;k<ncampioni;k++){                randArray(a,500,larray,0);                t1=clock();                        for(i=0;i<rip;i++){                                randArray(temp,500,larray,0);                              if(alg=0)  	 insort(temp,larray);                              else if (alg=1)   sort(temp,0,larray);                }                        t2=clock();                        tlordo=TO_MSEC(t2-t1);                        t1=clock();                        for(k=0;k<ncampioni;k++) {randArray(temp,500,larray,0);					          if (alg=0)z=2;						  else if (alg=1)z=2; }                        t2=clock();                        ttara=TO_MSEC(t2-t1);                        tnetto=((tlordo-ttara)/rip)/1000;                        s1+=tnetto;                        s2+=tnetto;}                        tmedio=s2/ncampioni; //non e chiaro da qui in poi;                        varianza=(s1-ncampioni*tmedio*tmedio)/(ncampioni-1) ;                        delta=1.96*sqrt(varianza/ncampioni);			I_C=tmedio-(delta*tmedio)+delta;			printf ("Lunghezza = %d ripetizioni %d ",larray, rip);                        printf ("\nMedia = %g Varianza : %g Delta :%g",tmedio,varianza,delta);                        printf ("\nIntervallo di Confidenza =%g \n",I_C);}void med_sort(int larray,int ncampioni){        int a[larray],temp[larray];        clock_t t1=0,t2=0;        double I_C,delta,tlordo,ttara,tnetto,tmedio,varianza,s1=0,s2=0;        int rip=0,k,i,l,z;        randArray(a,500,larray,0);        rip=getrip(larray,5);        for(l=0;l<larray;l++)a[l]=temp[l];        for(k=0;k<ncampioni;k++){                randArray(a,500,larray,0);                t1=clock();                        for(i=0;i<rip;i++){                                randArray(temp,500,larray,0);                                sort(temp,0,larray);                }                           t2=clock();                        tlordo=TO_MSEC(t2-t1);                        t1=clock();                        for(k=0;k<ncampioni;k++) randArray(temp,500,larray,0);                        t2=clock();                        ttara=TO_MSEC(t2-t1);                        tnetto=((tlordo-ttara)/rip)/1000;                        s1+=tnetto;                        s2+=tnetto;}                        tmedio=s2/ncampioni; //non e chiaro da qui in poi;                        varianza=(s1-ncampioni*tmedio*tmedio)/(ncampioni-1) ;                        delta=1.96*sqrt(varianza/ncampioni);                        I_C=tmedio-(delta*tmedio)+delta;                        printf ("Lunghezza = %d ripetizioni %d ",larray, rip);                        printf ("\nMedia = %g Varianza : %g Delta :%g",tmedio,varianza,delta);                        printf ("\nIntervallo di Confidenza =%g \n",I_C);}		/*	tmedio=s2/ncampioni;			varianza=(s1-ncampioni*tmedio*tmedio)/(ncampioni-1);			printf ("\nLunghezza = %d ripetizioni %d ",larray, rip);			printf ("\nMedia = %g Varianza : %g",tmedio,varianza);			printf ("\nDelta =%g  ,Intervallo di confidenza : %g",1.96*sqrt(varianza/ncampioni),tmedio-(1.96*sqrt(varianza/ncampioni)));}*/void int_insertion(int n,long x,int R){int C=500;int rip;int temp[n],a[n],i,l;double tempoins=0,sommatoria=0,sommatoria2=0,delta=0,S=0,media=0;randArray(a,R,n,1);rip=getrip(n,5);printf ("%d\n",rip);for (i=0;i<C;i++){ //    randArray(temp,R,n);     for (l=0;l<n;l++)a[l]=temp[l];     tempoins=tempoinsertion(temp,n,rip);     sommatoria +=tempoins;     sommatoria2+=sqrt(tempoins); // printf ("%f\n",tempoins);//  printf ("%f sommatoria,%f sommatoria2\n",sommatoria,sommatoria2);	}media=sommatoria/(C*rip);S=sqrt( (sommatoria2/(C*(rip*rip)))     -((media*media) ));//square 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -