下列给定的程序中,函数fun()的功能是:用冒泡法对数组中的n个元素按从大到小的顺序进行排序。

2024-12-02 20:20:04
推荐回答(3个)
回答1:

void fun(int a[], int n) {
int i, j, k, temp;
// 冒泡排序: 从大到小
for (i = n - 1; i > 0; i = k){
// 每次预置k=0,循环扫描后更新k
for (j = 0, k = 0; j < i; j++){
if (a[j] < a[j+1]){ // 大的放前面
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
k = j; // 保存最后下沉的位置。这样k后面的都是排序排好了的
}
}
}
}已经测试通过了排序前的数据:11 32 -5 2 14
排序后的顺序:32 14 11 2 -5

回答2:

#include
#define N 20
void fun(int a[],int n)
{
int i,j,t;
for(i=0;i for(j=0;j if(a[j] t=a[j],a[j]=a[j+1],a[j+1]=t;
}
void main()
{
int a[N]={11,32,-5,2,14},i,m=5;
printf("排序前的数据:");
for(i=0;i printf("%d ",a[i]);
printf("\n");
fun(a,m);
printf("排序后的顺序:");
for(i=0;i printf("%d ",a[i]);
printf("\n");
}

回答3:

int i,j,t;for(i=n-1;i>=1;i--) for(j=0;j<=i-1;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }