else{ if(meter[e] > *max)
' j/ r; k% b9 C7 f- q *max = meter;; o1 d- L% ]$ S' j8 j* }
if(meter < *min)" k) K: R2 k) l" L8 }" J5 L
*min = meter;$ @, y( y% m. ?& f- ?
}
7 f& F5 i6 w7 ?% ~& y* D; ] return ;$ j( C$ {4 W1 X! u- \+ e Q; W
}# J7 q0 A3 N* B7 D& E5 O% l& N3 q
i = s + (e-s)/2; /* 不是子问题继续分治,这里使用了二分,也可以是其它 */
/ |& K6 _- g, w3 J2 n3 j7 ? PartionGet(s,i,meter,max,min);
# W& Q7 q8 w0 B' @8 z( o PartionGet(i+1,e,meter,max,min);
5 n$ w7 `) k' C: G }
7 e" A3 _3 h0 x7 ]( ^( l0 } int main(){: p i" f6 v, E# [
int i,meter[M];
$ C8 N% d. \- \ int max = INT_MIN; /* 用最小值初始化 */5 B+ R, V6 u$ `: P) `' p- d! j- K) E
int min = INT_MAX; /* 用最大值初始化 */
) q( |$ O1 ?5 X) {2 H) Y printf("The array's element as followed:\n\n");
" |* s" o, s0 p0 @: t9 I# B randomize(); /* 初始化随机数发生器 */" F) D% t, r% \1 x* W+ d
for(i = 0; i < M; i ++){ /* 随机数据填充数组 */
+ ^' Z4 |5 u* X0 b meter = rand()%10000;& P5 U o: X! P5 x- v
if(!((i+1)%10)) /* 输出表的随机数据 */9 c- B9 Q4 S/ v( o! e g* b8 j
printf("%-6d\n",meter);
: `* f; Z' \8 C1 x# X: R else2 `0 B! c& \$ w' l' {
printf("%-6d",meter);1 e3 p7 y, }; I' w6 @/ ?7 u
}/ e2 u$ O5 W1 X- G
PartionGet(0,M - 1,meter,&max,&min); /* 分治法获取最值 */* Q0 V' a3 p {; h6 J
printf("\nMax : %d\nMin : %d\n",max,min);) n. k6 L: o: X. B" c8 Q
system("pause");
# G6 C+ ~2 Z' p h7 w! K return 0;- _: K8 l* p8 W0 I) q4 ?( Q
} |