对AFBIDJCGEH进行步长为五的希尔排序,第一趟排序后的结果是?
//希尔排序
void ShellSort(int* a, int n)
{
//1.确定gap(间隔)
int gap = n;
while (gap > 1)
{
gap = gap / 3 + 1;//加一能保证最后一次的挪动间距一定为1,即保证最后一次一定为直接插入排序。
for (int i = 0; i < n - gap; ++i)
{
int end = i;
int tmp = a[end + gap];
while (end >= 0)
{
if (a[end] > tmp)//如果以gap为间距的数据组中有比tmp大的,该数向后挪gap个位置。
{
a[end + gap] = a[end];
end -= gap;
}
else
break;//如果数据组中没有比tmp大的,不用挪动,直接退出
}
a[end + gap] = tmp;//将tmp插入到挪出的空位中(没挪就是在原位不动)
}
}
}