请完成函数fun(),它的功能是:用选择法对数组中n个元素按从大到小的顺序进行排序。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在下划线上填入所需的内容。
#include<stdio.h>
#define N 20
void fun(int a[],int n)
int i,j,t,p;
for(j=0;j<n-1; 1 )
p=j;
for(i=j;i<n;i++)
if(a[i] 2 a[p]
p=i;
t=a[p];
a[p]=a[j];
a[ 3 ]=t;
}
}
main()
int a[N]={11,32,-5,2,14,i,m=5;
for(i=0;i<m;i++)
printf("%d\n",a[i);
fun(a,m);
for(i=0;i<m;i++)
printf("%d"a[i]);
参考答案:void fun(int a[],int n)
{
int i,j,t,p;
for(j=0;j<n-A;j++)
{ p=j;
for(i=j;i<n;i++)
if(a[i]>a[p])
p=i;
t=a[p];
a[P]=a[j];
a[j]=t;
}
}
解析: 程序的基本思路是依次用当前取得的元素和它后面的其他元素进行比较,这样在比较完后,可以保证当前位置的当前元素存放着最大数。按同样方法取得次最大数。空白1处填j++,循环变量j依次增1,取出每个数;空白2处填>,按照题目要求是从大到小排序:空白3处填j,借助中间变量交换两个数。