你的位置:首页 > Java教程

[Java教程]分治递归:求数组元素的最大值,最小值


//分治递归,求数组元素的最大值,最小值/** * 保存产生的最大值,最小值 * @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());  }}