shell排序算法
shell排序算法
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 的话, 那j就为负数了 ?
还帮我讲下shell算法的整体结构思想。
[解决办法]
shell排序的整体结构思想如下
希尔排序法
[解决办法]
for(j=i-gap; j>=0; && v[j]>v[j+gap]; j-=gap)//你这儿肯定有问题,都三个分号了,另外j-=gap是负数怕什么,就不执行下面的了,重新循环而已
[解决办法]