当前位置:   article > 正文

Python算法——分治法查找数组中元素最小最大值_分治法 最大和最小查询次数

分治法 最大和最小查询次数

要求:

       给定数组a1,a2,a3,...an,找出数组中最大值和最小值。(数组中两两各不相同)

分析:

è¿éåå¾çæè¿°

       算法思想类似于上图,将数组两两分为一组,如果数组元素奇数个,就把最后一个元素单独分为一组,然后分别对每一组中相邻两个元素比较,把二者中值小的数放在数组左边,值大的数放在数组右边,只需比较n/2次就可以将数组分组完成。这时候最小值在每一组左边部分,最大值在每一组右边部分,接着在每一组左边部分找最小值,右边部分找最大值,查找分别需比较n/2-1次和 n/2-1次。因此,总共比较次数约为(n/2)+(n/2-1)+(n/2-1)=3n/2-2次。

实现代码:

  1. # -*- coding:utf-8 -*-
  2. class MaxMin():
  3. def __init__(self):
  4. self.max = None
  5. self.min = None
  6. def getMax(self):
  7. return self.max
  8. def getMin(self):
  9. return self.min
  10. def GetmaxAndmin(self,arr):
  11. if arr==None:
  12. print("参数不合法")
  13. return
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号