- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
int p,k,l,i,j,d,q,R,t,r;
S1: s=0; p=1;
S2: if (s==0) { i=1; j=n; k=n; l=2*n+1; }
if (s==1) { i=n+1; j=2*n; k=0; l=n+1; }
d=1; q=p; r=p;
S3: if (x[i]>K>x[j]->K) goto S8;
S4: k=k+d; x[k]=x[i]; c[k]=c[i];
S5: i+=1; q-=1; if (q>0) goto S3;
S6: k+=d; if (k==l) goto S13; else x[k]=x[j];c[k]=c[j];
S7: j-=1; r-=1; if (r>0) goto S6; else goto S12;
S8: k+=d; x[k]=x[j]; c[k]=c[j];
S9: j-=1; r-=1; if (r>0) goto S3;
S10: k+=d; if (k==l) goto S13; else x[k]=x[i];c[k]=c[i];
S11: i+=1; q-=1; if (q>0) goto S10;
S12: q=p; r=p; d=-d; t=k; k=l; l=t; if (j-i<p) goto S10; else goto S3;
S13: p+=p; if (p<n) { s=1-s; goto S2; }
if (s==0) for (t=1; t<=n; t+=1) { x[t]=x[t+n];c[t]=c[t+n] }
Вот такой вариант сортировки предложен в одной известной книге. Оно работает...