shell sort的代码看不懂。求解惑

m
majiaamajia
楼主 (北美华人网)
我看不懂为什么是从第gap元素开始进行直接插入排序的。 比如{1, 2, 3, 4, 5, 6, 7, 8} 当二次循环的时候,增量gap变成了2,那么需要对{1, 3, 5, 7}和{2, 4, 6, 8} 分别进行直接插入排序。那不应该分别从7 和8开始往前做插入排序吗?为什么会从第gap元素开始呢?第gap元素,不是3和4吗?
A
AlIen_196883
从gap开始当然没错,前面的在第一排,本来就不用调顺序。 不过什么烂教材,这么明显的错也能出?arr[j]=arr[j-gap]; 要改成 swap(arr[j],arr[j-gap]); 不然全覆盖了。没有swap的话就自己写个。 哦,if 完了下面应该还有一行 arr[j]=temp; 换回来。难怪。 话说这是什么语言,js么?js有必要刷算法么? 哦,java也是这样的语法啊……写了好多年的C++,感觉都很难找到工作……是不是相比于把一门语言学得很熟练,多学几门语言对找工作更有用?真是麻烦啊。