当前位置:   article > 正文

分治法-求最大最小元素_1.写出分治法求最大最小元素的程序和直接求最大最小元素的程序,并设计数据实例运

1.写出分治法求最大最小元素的程序和直接求最大最小元素的程序,并设计数据实例运

给定含有n个元素的集合,在其中找出最大和最小元素。

直接找最大和最小元素
procedure STRAITMAXMIN(A, n, max, min)
//将A中的最大值置于max,最小值置于min//
Integer i, n
max←min←A(1)
for i←2 to n do
if A(i) > max then max←A(i) endif
if A(i) < min then min←A(i) endif
repeat
end STRAITMAXMIN

 

分治求解策略
–记问题的一个实例为:
I = (n, A(1), … , A(n))
–采用二分法将I分成两个子集合处理
I1 = (n/2, A(1), …, A(n/2)), 和
I2 = (n- n/2, A(n/2+1), …, A(n))
–则有,
MAX(I) = max(MAX(I1), MAX(I2))
MIN(I) = min(MIN(I1), MIN(I2))
–采用递归的设计策略,得到以下算法

  1. procedure MAXMIN(i, j, fmax, fmin)
  2. //A(1:n)是含有n个元素的数组,参数i, j是整数,1≤i, j≤n //
  3. //该过程把A(i:j)中的最大和最小元素分别赋给fmax和fmin //
  4. integer i, j; global n, A(1:n)
  5. case
  6. :i=j: fmax←fmin←A(i) //只有一个元素
  7. :i=j-1:if A(i)<A(j) then fmax←A(j); fmin←A(i)
  8. else fmax←A(i); fmin←A(j) endif //两个元素的情况
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/82013
推荐阅读
相关标签
  

闽ICP备14008679号