我写了三种不同Big-O复杂性的方法。有没有办法在我的方法中返回多个值而不影响复杂性?提前谢谢!
public static double Nsquare(double[] ar){
double max=0, difference=0;
double maxelement=0, minelement=0 ;
for (int i=0; i<ar.length;++i){
for (int j=0; j<ar.length;++j){
difference=Math.abs(ar[i]-ar[j]);
if (difference>max){
max=difference;
maxelement=ar[i];
minelement=ar[j];
}
}
}
//return maxelement;
//return minelement;
return max;
}
// O(n*log(n))
public static double NlogN(double[] ar){
Arrays.sort(ar);
double max=ar[ar.length-1];
double min=ar[0];
double difference=max-min;
//return max;
//return min;
return difference;
}
// O(n)
public static double N(double[] ar){
double max = Double.NEGATIVE_INFINITY;
double min = Double.POSITIVE_INFINITY;
for(double x: ar){
if(min > x) {min =x;}
if(max < x) {max =x;}
}
//return max;
//return min;
return Math.abs(max-min);
}
答案 0 :(得分:3)
不能返回多个项目。但你可以创建那些很多项目的对象,然后你可以返回它。
答案 1 :(得分:1)
在java中,您无法单独返回多个值 。您可以做的是,您可以将要返回的所有值添加到列表中,然后将引用返回到列表。
这样的事情:
List<Double> doubleList = new ArrayList<>();
doubleList.add(max); // index 0
doubleList.add(maxelement); // index 1
doubleList.add(minelement); // index 2
return doubleList;
您必须更改方法签名以及如何调用此方法。
答案 2 :(得分:0)
只需编写一个包含字段max,maxelement,minelement的新类。将此类设置为返回类型。
class Answer{
private double max;
private double maxelement;
private double minelement;
public Answer(double max, double maxelement, double minelement){
this.max = max;
this.maxelement = maxelement;
this.minelement = minelement;
}
public double getMax() {
return max;
}
public double getMaxelement() {
return maxelement;
}
public double getMinelement() {
return minelement;
}
}
然后回复:
public static Answer Nsquare(double[] ar){
--
your code
--
return new Answer(max, maxelement, minelement);
}