else{ if(meter[e] > *max); q) T$ Q5 V G# J# ?' {: @. d* j
*max = meter;
% t" C4 k5 i5 L, J2 o& ` if(meter < *min)
$ Z. b) Z+ X& S' A *min = meter;; z9 ~. T' t% S Z2 y
}* R* `$ D4 A6 K. b
return ;
: V n% ^. g; U! D L; j, g }: ^' W" n; B, E
i = s + (e-s)/2; /* 不是子问题继续分治,这里使用了二分,也可以是其它 */9 @/ ]( i! o1 h) a
PartionGet(s,i,meter,max,min);# q+ r6 U$ N. t- d5 V, A
PartionGet(i+1,e,meter,max,min);
9 n: N8 o# `0 [ }
" f! [' Q6 R8 b4 F* o int main(){ ~) ~% P$ _9 s% A0 u6 @( i+ L
int i,meter[M];0 ?7 N+ V5 x% Q3 s+ _
int max = INT_MIN; /* 用最小值初始化 */
" x& ?' s0 J" U: O8 Y7 T int min = INT_MAX; /* 用最大值初始化 */
" e+ g- i0 A$ h" Z' U printf("The array's element as followed:\n\n");) W9 f) e2 T- v+ K& H7 K9 l
randomize(); /* 初始化随机数发生器 */
" |4 h) r, T q4 j8 U0 E for(i = 0; i < M; i ++){ /* 随机数据填充数组 */
" z7 T1 p, Y5 V X/ d meter = rand()%10000;
, e1 A+ Z' n$ G; t: d" z3 v; ~ if(!((i+1)%10)) /* 输出表的随机数据 */3 c4 n+ @* a6 O9 o
printf("%-6d\n",meter);5 v7 S% q# r. \# H1 P; z y, h
else$ e7 _. S8 e6 [% Q; D+ n- {
printf("%-6d",meter);* a% }4 o' j1 J1 U/ n
}
( ~4 S/ o# s3 {1 _3 U! @0 [. C' m PartionGet(0,M - 1,meter,&max,&min); /* 分治法获取最值 */3 d7 B; C* i. i6 m4 O3 ~
printf("\nMax : %d\nMin : %d\n",max,min);5 z- H! w7 ~# G' Z- x2 i/ K3 A3 j
system("pause");' | V+ i/ O* K
return 0;% f8 \$ C+ F9 z1 [* D1 T2 M
} |