当前位置:   article > 正文

求数组的最大值最小值_找到数组中的最小值和最大值,要求用最快的时间复杂度

找到数组中的最小值和最大值,要求用最快的时间复杂度
算法数组中的最大值和最小值

方法1:遍历两次求出最大值最小值 ,时间复杂度N*2

方法2:相邻两个数分为一组比较,大的放在偶数位,小的放到奇数位,然后在偶数位上找到最大值,在奇数位上找到最小值N*1.5

方法3:定义两个变量Max,Min值,相邻两个数分为一组,比较出最大值和最小值,最大值和Max比较,是否大于Max,如果大于赋值于Max,最小值和Min比较,是否小于Min,如果小于赋值于Min

方法4:递归方法,分别求出前后N/2个数的Min和Max

 

代码:

  1. (Max,Min)Search(arr, b, e)
  2. {
  3. If(e-b<=1)
  4. {
  5. If(arr[b]<arr[e])
  6. {
  7. Return arr[e], arr[b];
  8. }
  9. Else
  10. {
  11. Return arr[b], arr[e];
  12. }
  13. }
  14. MaxL,MinL=Search(arr,b,b+(e-b)/2);
  15. MaxR,MinR=Search(arr,b+(e-b)/2,e);
  16. If(MaxL>MaxR)
  17. maxV=maxL;
  18. else
  19. maxV=maxR;
  20. if(minL<minR)
  21. minV=minL;
  22. else
  23. minV=minR;
  24. return maxV,minV;
  25. }


扩展:
 求N个数组中,第二大的数:分别求出前后N/2中的最大值,比较返回较小的那个

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/598749
推荐阅读
相关标签
  

闽ICP备14008679号