编写递归函数,求给定数组中所有元素的中位数。假设n个数的中位数是第n/2个数

如题所述

#include <stdio.h>

int midnum(int a[],int l,int r)

{int i,min,max,t;

 if(l>=r-1)

 {

if(a[l]>a[r])

{t=a[l];a[l]=a[r];a[r]=t;}

return a[r];

 }

 min=max=l;

 for(i=l+1;i<=r;i++)

if(a[i]>a[max])max=i;

  else if(a[i]<a[min])min=i;

t=a[l];a[l]=a[min];a[min]=t;

t=a[r];a[r]=a[max];a[max]=t;

return midnum(a,l+1,r-1);

}

int main()

{int n,i,a[100];

 printf("有几个数:");

 scanf("%d",&n);

 for(i=0;i<n;i++)

scanf("%d",&a[i]);

 printf("中位数是%d\n",midnum(a,0,n-1));

 getch();

 return 0;

}

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答