定义递归函数实现用"起泡法"对输入的N个数(采用数组存储)按从大到小排序,并设计主函数进行调用;

如题所述

#include<stdio.h>
void sort(int a[],int n)
{int i,t;
 for(i=0;i<n-1;i++)
   if(a[i]<a[i+1])
   {t=a[i];a[i]=a[i+1];a[i+1]=t;}
 if(n>1)sort(a,n-1);  
}
int main()
{int a[200],i,n;
 scanf("%d",&n);
 for(i=0;i<n;i++)
   scanf("%d",&a[i]);
 sort(a,n);
 for(i=0;i<n;i++)  
     printf("%d ",a[i]);
 return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-25
#include <stdio.h>
#include <malloc.h>
//1. 降序冒泡排序方法:
void bubble(int array[], int length)
{
bool exchanged = true;
for (int i = length - 1; i > 0 && exchanged; i--)
{
exchanged = false;
for (int j = 0; j < i; j++)
{
if (array[j] < array[j + 1])
{
array[j] = array[j] + array[j + 1];
array[j + 1] = array[j] - array[j + 1];
array[j] = array[j] - array[j + 1];
exchanged = true;
}
}
}
}

//2. 打印函数
void print(int array[], int length)
{
for(int i = 0; i < length; i++)
printf("%d ", array[i]);
printf("\n");
}

//3. 主函数
void main()
{
int n;
int *array;
scanf("%d", n); //输入N
if (n <= 0) //待排序的数个数小于等于零就无需处理了
return;
array = (int *)malloc(sizeof(int) * n); //申请数组空间
for (int i = 0; i < n; i++)
{
scanf("%d", &array[i]);
}
print(array,n); //输入序列
bubble(array, n); //排序
print(array,n); //输出序列
free(array);
}本回答被提问者采纳