希尔排序-C语言
2020.11月软考时考了希尔排序,但是目前我还是没想明白他的那个if要填什么。。。。。
下面是今天重新看的 《C程序设计语言》书上的例子,这个和之前理解的希尔就没有什么出入了。
void shellSort(int v[], int n){
int gap, i, j, temp;
for(gap = n/2; gap > 0; gap /= 2){
for(i = gap; i < n; i++){
for(j = i - gap; j>=0 &&v[j]>v[j+gap]; j-=gap){
temp = v[j];
v[j] = v[j+gap];
v[j+gap] = temp;
}
}
}
}
考试时,把变量j的作用域范围搞错了,最后的v[j+gap] = t;这个竟然被我写错了。。尴尬~
引以为戒~