zoukankan      html  css  js  c++  java
  • 使用分治思想 求数组中的最大和最小值

    代码具体实现如下:

    package com.zuoyan.algorithm;
    
    public class FindMinMax {
        
        
        //Main函数进行测试
        public static void main(String[] args) {
            int[] a=new int[]{1,10,2,19,365,-2,100,28};
            MinMax minMax = getMinMax(a, 0,a.length-1);
            System.out.println("最小值:"+minMax.getMin());
            System.out.println("最大值:"+minMax.getMax());
            
        }
        
        public static MinMax getMinMax(int [] array,int start,int end){
            
            //分治的终止条件 如果  两个坐标相邻 或者是同一个坐标,返回最小的值和最大的值
            if(end-start<=1){
                if(array[start]>array[end]){
                    return new MinMax(array[end],array[start]);
                }else
                {
                    return new MinMax(array[start], array[end]);
                }
            }
            else{
                
                //如果开始下标和终止下标没有到达终止下标,求出中间坐标
                int mid = (start+end)/2;
                MinMax left = getMinMax(array, start, mid);
                MinMax right = getMinMax(array, mid+1, end);
                
                int max = 0,min = 0;
                
                min = left.getMin()<right.getMin()?left.getMin():right.getMin();
                max = left.getMax()>right.getMax()?left.getMax():right.getMax();
                
                //返回查找的最大最小
                return new MinMax(min, max);
            }
            
        }
    
    }
    
    
    class MinMax
    {
        private int max;
        private int min;
        
        
        public MinMax(int min, int max) {
            super();
            this.max = max;
            this.min = min;
        }
        
        
        
        public int getMax() {
            return max;
        }
        public void setMax(int max) {
            this.max = max;
        }
        public int getMin() {
            return min;
        }
        public void setMin(int min) {
            this.min = min;
        }
        
        
        
    }
  • 相关阅读:
    迭代器和生成器
    装饰器进阶
    闭包和装饰器
    函数的嵌套
    函数的参数
    什么是粘包现象
    模拟ssh远程命令执行
    客户端与服务端代码bug修复和加入循环
    用socket实现简单的套接字通讯
    网络编程之客户端和服务端,
  • 原文地址:https://www.cnblogs.com/kangxinxin/p/10645808.html
Copyright © 2011-2022 走看看