void sprstp(float sa[], unsigned long ija[], float sb[], unsigned long ijb[]) { void iindexx(unsigned long n, long arr[], unsigned long indx[]); unsigned long j,jl,jm,jp,ju,k,m,n2,noff,inc,iv; float v; n2=ija[1]; for (j=1;j<=n2-2;j++) sb[j]=sa[j]; iindexx(ija[n2-1]-ija[1],(long *)&ija[n2-1],&ijb[n2-1]); jp=0; for (k=ija[1];k<=ija[n2-1]-1;k++) { m=ijb[k]+n2-1; sb[k]=sa[m]; for (j=jp+1;j<=ija[m];j++) ijb[j]=k; jp=ija[m]; jl=1; ju=n2-1; while (ju-jl > 1) { jm=(ju+jl)/2; if (ija[jm] > m) ju=jm; else jl=jm; } ijb[k]=jl; } for (j=jp+1;j iv) { ijb[m]=ijb[m-inc]; sb[m]=sb[m-inc]; m -= inc; if (m-noff <= inc) break; } ijb[m]=iv; sb[m]=v; } } while (inc > 1); } }