void ShellSort(LineList r[], int n) { /*希尔排序算法函数*/ int i, j, d; d = n / 2; /*初始步长为表长的一半*/ while (d > 0) { for (i = d; i <= n; i++) { r[0] = r[i]; /*设监视哨*/ j = i - d; while (j >= 0 && r[0].Key < r[j].Key) { r[j + d] = r[j]; j = j - d; } r[j + d] = r[0]; j = j - d; } d = d / 2; } }这个怎么改呢
时间: 2024-03-12 09:43:10 浏览: 55
要让这段代码输出排序的过程,可以在排序过程中添加一些输出语句。具体修改如下:
```
void ShellSort(LineList r[], int n) { /*希尔排序算法函数*/
int i, j, d;
d = n / 2; /*初始步长为表长的一半*/
while (d > 0)
{
for (i = d; i <= n; i++)
{
r[0] = r[i]; /*设监视哨*/
j = i - d;
while (j >= 0 && r[0].Key < r[j].Key)
{
r[j + d] = r[j];
j = j - d;
}
r[j + d] = r[0];
j = j - d;
}
// 添加输出语句,输出每次排序后的结果
printf("步长为 %d 时的排序结果:", d);
for(int k=1; k<=n; k++){
printf("%d ", r[k].Key);
}
printf("\n");
d = d / 2;
}
}
```
这样修改后,每次排序后都会输出排序结果。同时,还会输出每次排序时使用的步长。
阅读全文