分治再帰:配列要素の最大値を求めて、最小値
6152 ワード
// , ,
/**
* ,
* @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());
}
}