首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么用 *c++* 来实现这个递归求最大最小值的算法算法!

2012-02-26 
如何用 *c++*来实现这个递归求最大最小值的算法算法!!!求助!!procedureMAXMIN(i,j,fmax,fmin)integeri,jg

如何用 *c++* 来实现这个递归求最大最小值的算法算法!!!求助!!


procedure   MAXMIN(i,j,fmax,fmin)

integer   i,j;global   n,A(1:n)
case
      :i=j;fmax <--fmin <--A(i)
      :i=j-1;     if   A(i) <A(j)   then   fmax <--A(j);fmin <--A(i)
                                                  else   fmax <--A(i);fmin <--A(j)
                        endif
      :else:min <--|_(i+j)/2_|(向下取正就是(1+4)/2=2)
      call   MAXMIN(i,mid,gmax,gmin)         //这里就是调用
      call   MAXMIN(min+1,j,hmax,hmin)    
      fmax <--max(gmax,hmax)
      fmin <--min(gmin,hmin)
endcase
end   MAXMIN

希望你们不要嫌麻烦!认真看完呀!谢谢了!
我就是想知道如何用c++   来实现这个算法!!


[解决办法]
寒,这个函数是递归求最大最小值的...
用来排序的话就很奇怪了~

楼上的能输入,或者给那十个数的使用,程序见下

#include <stdio.h>

// ============================================================================
// ==============================================================================

int max(int a, int b)
{
return a > b ? a : b;
}

// ============================================================================
// ==============================================================================
int min(int a, int b)
{
return a < b ? a : b;
}

const int n = 256;

int A[n] = { 2, 6, 5, 4, 12, 45, 47, 2, 1, 8 };

// ============================================================================
// ==============================================================================

void MAXMIN(int i, int j, int &fmax, int &fmin)
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int mid, gmin, gmax, hmin, hmax;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~

if (i == j) {
fmax = fmin = A[i];
} else if (i == j - 1) {
if (A[i] < A[j]) {
fmax = A[j];
fmin = A[i];
} else {
fmax = A[i];
fmin = A[j];
}
} else {
mid = (i + j) / 2;
MAXMIN(i, mid, gmax, gmin);
MAXMIN(mid + 1, j, hmax, hmin);
fmax = max(gmax, hmax);
fmin = min(gmin, hmin);
}
}

// ============================================================================
// ==============================================================================
int main()
{
//~~~~~~~~~~~
int nMax, nMin;
int i, nCount;
//~~~~~~~~~~~

MAXMIN(0, 9, nMax, nMin);
printf( " Max %d\n Min %d\n ", nMax, nMin);

while (scanf( "%d ", &nCount) != EOF) {
for (i = 0; i < nCount; i++) {
scanf( "%d ", &A[i]);
}

if (!nCount) {
continue;
}

MAXMIN(0, nCount - 1, nMax, nMin);
printf( " Max %d\n Min %d\n ", nMax, nMin);
}

return 0;
}

热点排行