//分治递归,求数组元素的最大值,最小值 /** * 保存产生的最大值,最小值 * @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()); } }
时间: 2024-10-12 04:37:30