sort(from,n) double from[]; int n; { int k, m; register int i, j; if(n <= 1) return; for( j=1; j<=n; j*=2 ) ; for( m=2*j-1; m/=2; ) { k=n-m; for( j=0; j=0; i-=m ) { register double *fromi; fromi = &from[i]; if( cf(fromi[m],fromi[0])>0) { break; }else{ ex(fromi+m, fromi); } } } } }