当前位置:   article > 正文

python——分治策略求最大值和最小值_分治算法最小值问题 算法分析ph

分治算法最小值问题 算法分析ph

最近在学算法,刚入手分治,这是自己的一些心得,记录一下。

分治就是把一个大的问题分成很多小的子问题,不断调用递归将问题分解成多个小问题。以下是个人解题的一些想法:

  1. 分治其实就是递归的一种用途,必须要有递归出口,就是当问题小到一定程度我们可以解决了,可以每次考虑从出口入手问题。
  2. 分治是先分再合,分完后记得还要将问题的解和起来

代码实现

  1. def maxmin(l, low, high):
  2. # 判断列表分到最后只剩下一个或者两个数时就比较
  3. # 返回的是一个列表[max,min],第一个最大值,第二个最小值
  4. if high - low <= 1:
  5. if l[low] < l[high]:
  6. return [l[high], l[low]]
  7. else:
  8. return [l[low], l[high]]
  9. # 选取分治的中点
  10. mid = (low + high) // 2
  11. # 调用递归
  12. left_list = maxmin(l, low, mid)
  13. right_list = maxmin(l, mid + 1, high)
  14. # 将左边的最大值和右边的最大值比较
  15. if left_list[0] > right_list[0]:
  16. # 将左边的最小值和右边最小值比较
  17. if left_list[1] > right_list[1]:
  18. # 返回列表[max,min]
  19. return [left_list[0], right_list[1]]
  20. else:
  21. return [left_list[0]
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/81981
推荐阅读
相关标签
  

闽ICP备14008679号