希尔排序问题 解答好的可以加分!

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:59:26
这是计算机二级考试练习_公共必修试题的练习题。
已知序列{503、17、512、908、170、897、275、653、426、154、509、612、677、765、703、94},采用希尔排序法d1=8,对该序列作生序排序,则第三趟的排序结果是__
看不明白,哪位朋友帮帮忙,解一下这道题,要详细的解析。拜托了。

#include <stdio.h>
#include <stdlib.h>

void PrintArray(int *p,int length)
{ // 打印输出的函数
int i;
for(i=1;i<=length;i++)
printf("%-4d",p[i]);
printf("\n");
} //PrintArray

void ShellPass(int *p,int increment,int length)
{ //希尔排序中的一趟排序,实际就是插入排序,increment为当前增量
int i,j;
//将p[increment+1..length]分别插入各组当前的有序区
for(i=increment+1;i<=length;i+=increment)
if(p[i]<p[i-increment])
{
p[0]=p[i]; j=i-increment;

do{
p[j+increment]=p[j]; //后移记录
j=j-increment; //查找前一记录
}while(j>0 && p[0]<p[j]); //从小到大排列
p[j+increment]=p[0]; //插入p[i]到正确的位置上
}
}// ShellPass

void ShellSort(int *p,int length