稀尔排序的算法问题
void process::shellsort(sample &s) //希尔排序
{ int i,j,gap,temp; gap=s.n/2;
while(gap>0)
{ for(i=gap;i<s.n;i++)
{ j=i-gap;
while (j>=gap)
if(s.A[j]>s.A[j+gap])
{ temp=s.A[j]; s.A[j]=s.A[j+gap]; s.A[j+gap]=temp; j=j-gap; }
else j=0;
}
gap=gap/2;
}
}
这是我看别人的算法的代码,但是不明白中间那个判断的意思,我知道当IF为TURE时,将数组头和数组中间的数调换,当IF为FALSE时,J=0;是什么意思,还有后面再一个gap=gap/2;又何解???
望高手指点,希望能把整个算法详解一下.新手问题多.先谢过了!