下面的shell算法小弟不大理解,谁能给解释一下,最后能做上注释
public void Sort(int [] list) 

int inc; 
for(inc=1;inc<=list.Length/9;inc=3*inc+1); 
for(;inc>0;inc/=3) 

for(int i=inc+1;i<=list.Length;i+=inc) 

int t=list[i-1]; 
int j=i; 
while((j>inc)&&(list[j-inc-1]>t)) 

list[j-1]=list[j-inc-1]; 
j-=inc; 

list[j-1]=t; 




解决方案 »

  1.   

    别的我大都理解,只是for(inc=1;inc<=list.Length/9;inc=3*inc+1); 这句小弟不大明白,麻烦知道的人给解释一下
      

  2.   

    for(inc=1;inc<=list.Length/9;inc=3*inc+1); 
    在每次循环完成后inc = 3*inc + 1;如果inc大于
    list.length/9则推出循环
      

  3.   

    这不就是算出序列跨度的最大值,而此值要看你目前list.Length长度而定。