阅读下列程序。
#include<stdio.h>
void fun(int a[],int dk,int n)
{ int i,j,temp;
for(i=dk;i<n;i++)
if(a[i]<a[i-dk])
{ temp=a[i];
j=i-dk;
while(j> =0&&temp<a[i])
{ a[j+dk]=a[j];
j=j-dk;
}
a[j+dk]=temp;
}
}
void f33(int a[],int d[],int t,int n)
{ int k;
for(k=0;k<t;k++)
fun(a,d[k],n);
}
int main()
{ int a[]={10,12,43,50,66,24,88,2,33};
int d[]={5,3,1},i;
f33(a,d,sizeof(d)/sizeof(int),sizeof(a)/sizeof(int));
for(i=0;i<sizeof(a)/sizeof(int);i++)
printf("%d,",a[i]);
printf("n");
return 0;
}
请回答下列问题。
(1)程序的输出是什么?
(2)函数main()中数组d[]的作用是什么?
(3)写出函数f33()的功能。
【正确答案】:(1)2,10,12,24,33,43,50,66,88
(2)增量序列
(3)函数f33()的功能是对数组a进行希尔排序。
阅读下列程序。#include<stdio.h> void fun(int a[],int dk,int n){ i
- 2024-11-07 01:33:51
- 数据结构与算法(13003)