首页 > 编程语言 > 详细

分治递归:求数组元素的最大值,最小值

时间:2015-06-19 10:03:59      阅读:246      评论:0      收藏:0      [点我收藏+]
//分治递归,求数组元素的最大值,最小值
/**
 * 保存产生的最大值,最小值
 * @author Administrator
 *
 */
public class Values {
    private int max;
    private int min;
    
    public Values(int max,int min){
        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;
    }
}


/**
 * 分治递归找出数组元素中的最大数,最小数
 * @author Administrator
 *
 */
public class MinMax {
    public void min_max(int a[],int s,int e,Values values){
        Values lValues=new Values(0,0);
        Values rValues=new Values(0,0);
        
        if(e==s+1||e==s){
            if(a[s]>=a[e]){
                values.setMax(a[s]);
                values.setMin(a[e]);
            }
            else{
                values.setMax(a[e]);
                values.setMin(a[s]);
            }
            return;
        }
        
        int mid=(e+s)/2;
        min_max(a,mid+1,e,lValues);
        min_max(a,s,mid,rValues);
        values.setMax(lValues.getMax()>rValues.getMax()?lValues.getMax():rValues.getMax());
        values.setMin(lValues.getMin()<rValues.getMin()?lValues.getMin():rValues.getMin());
    }
}


/**
 * 分治递归找出数组元素中的最大数,最小数
 * @author Administrator
 *
 */
public class MinMax {
    public void min_max(int a[],int s,int e,Values values){
        Values lValues=new Values(0,0);
        Values rValues=new Values(0,0);
        
        if(e==s+1||e==s){
            if(a[s]>=a[e]){
                values.setMax(a[s]);
                values.setMin(a[e]);
            }
            else{
                values.setMax(a[e]);
                values.setMin(a[s]);
            }
            return;
        }
        
        int mid=(e+s)/2;
        min_max(a,mid+1,e,lValues);
        min_max(a,s,mid,rValues);
        values.setMax(lValues.getMax()>rValues.getMax()?lValues.getMax():rValues.getMax());
        values.setMin(lValues.getMin()<rValues.getMin()?lValues.getMin():rValues.getMin());
    }
}

 

分治递归:求数组元素的最大值,最小值

原文:http://www.cnblogs.com/grow1016/p/4587707.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!