首页 > 试题广场 > 阅读下列函数arrange( )(7 分) int arr
[问答题]

阅读下列函数arrange( )(7 )

int arrange(int a[],  int low, int hig, int x)   // low和hig分别为数据区的下界和上界
{   int i,j,t;
i=low;  j=hig;
while (i<j)
{          while (i<j & a[j]>=x)   j--;
            while (i<j & a[i]<x)    i++;
           if   (i<j)  {     t=a[i]; a[i]=a[j];a[j]=t;}
         }
if(a[i]<x)           return    i;         else return       i-l;


(1)写出该函数的功能; (2)

(2)写一个调用上述函数实现下列功能的算法:- -整形数组b[n]中的元素进行重新排列,将所有负数均调整到数组的低下标端,将所有正数均调整到数组的离下标端,若有零值,则量于两者之间,并返问数组中零元案的个数。(5)

解答: (1)该函数的功能是:调整整数数组a[]中的元素并返回分界值i,使所有<x的元素均落在a[1..i]上,使所有≥x的元素均落在a[i+1..h]上。 (2)int f(int b[],int n) { int p,q; p=arrange(b,0,n-1,0); q= arrange(b,p+1,n-1,1); return q-p; }
发表于 2019-09-11 19:46:58 回复(0)