#include #include #include int ix=1,iy=1; float y[100001]; void main() { int i,n; int i025,i050,i500,i950,i975; float x[100001]; float urnd(void); void sort(float x[],int n); clock_t t0,t1; double dt; for(i=1;i<=10000;i++) urnd(); scanf("%d",&n); for(i=1;i<=n;i++){ x[i]=urnd(); y[i]=x[i]; } t0=clock(); sort(x,n); t1=clock(); dt=(t1-t0)/((double)CLOCKS_PER_SEC); /* for(i=1;i<=n;i++) printf("%10d %10.8f %10.8f\n",i,x[i],y[i]); */ printf("Computational Time = %10.2lf\n",dt); i025=(int)( 0.025*(float)n ); i050=(int)( 0.050*(float)n ); i500=(int)( 0.500*(float)n ); i950=(int)( 0.950*(float)n ); i975=(int)( 0.975*(float)n ); printf(" 2.5 percent point = %10.8f\n",(y[i025]+y[i025+1])/2.0 ); printf(" 5 percent point = %10.8f\n",(y[i050]+y[i050+1])/2.0 ); printf("50 percent point = %10.8f\n",(y[i500]+y[i500+1])/2.0 ); printf("95 percent point = %10.8f\n",(y[i950]+y[i950+1])/2.0 ); printf("97.5 percent point = %10.8f\n",(y[i975]+y[i975+1])/2.0 ); } /* ================================================ */ float urnd(void) { int kx,ky; float rn; /* Input: ix, iy: Seeds Output: rn: Uniform Random Draw U(0,1) */ kx=ix/53668; ix=40014*(ix-kx*53668)-kx*12211; ky=iy/52774; iy=40692*(iy-ky*52774)-ky*3791; rn=(float)(ix-iy)/2147483563.; rn-=(int)rn; if( rn<0.) rn++; return rn; } /* ------------------------------------------------ */ void sort(float x[],int n) { int i,j,m; float xmin=1000000000.0; float w[100001]; for(i=1;i<=n;i++) w[i]=x[i]; for(i=1;i<=n;i++){ y[i]=xmin; for(j=1;j<=n-i+1;j++){ if( y[i]>w[j] ){ y[i]=w[j]; m=j; } } for(j=m;j<=n-i;j++) w[j]=w[j+1]; } }