读书人

希尔排序的小疑点

发布时间: 2012-02-11 09:51:35 作者: rapoo

希尔排序的小问题
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;
}
}
其中最内部的for (j=i-gap; j> =0 && v[j]> v[j+gap]; j-=gap)中j-=gap的语句有什么用,是不是必要呢?

[解决办法]
当然要了,不然也不用循环
shell排序是间隔gap的各个元素排序
for (j=i-gap; j> =0 && v[j]> v[j+gap]; j-=gap)
这部分应该是冒泡排序

读书人网 >软件架构设计

热点推荐