主题:2008年下半年程序员笔试考前练习(21)
http://www.educity.cn 作者:不详 来源:希赛教育
希尔排序
已知待排序序列data[n];希尔排序的增量序列为d[m],其中d[]序列降序排列,且d[m-1]=1。其方法是对序列进行m趟排序,在第 i 趟排序中,按增量d把整个序列分成d个子序列,并按直接插入排序的方法对每个子序列进行排序。
希尔排序的程序为:
void shellsort(int *data,int *d,int n,int m)
{ int i,j;
for (i=0;i
for (j=0; (1) ;j++)
shell( (2) );
}
void shell(int *data,int d,int num,int n)
{ int i,j,k,temp;
for (i=1; (3) ;i++)
{ j=0;
temp=data[j+i*d];
while ((j
j++;
for (k=j;k
data[k+1]=data[k];
(5) ;
(6) }
}
参考答案:(1)j
(2)data,d,j,n
(3)num+i*d
(4)data[j+i*d]
(5)data[j]=temp
希尔排序
已知待排序序列data[n];希尔排序的增量序列为d[m],其中d[]序列降序排列,且d[m-1]=1。其方法是对序列进行m趟排序,在第 i 趟排序中,按增量d把整个序列分成d个子序列,并按直接插入排序的方法对每个子序列进行排序。
希尔排序的程序为:
void shellsort(int *data,int *d,int n,int m)
{ int i,j;
for (i=0;i
for (j=0; (1) ;j++)
shell( (2) );
}
void shell(int *data,int d,int num,int n)
{ int i,j,k,temp;
for (i=1; (3) ;i++)
{ j=0;
temp=data[j+i*d];
while ((j
j++;
for (k=j;k
data[k+1]=data[k];
(5) ;
(6) }
}
参考答案:(1)j
(2)data,d,j,n
(3)num+i*d
(4)data[j+i*d]
(5)data[j]=temp