2015-05-18 40 views
2

我寫了三種不同的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

使用地圖使用列表,因爲你可以方便地訪問使用地圖鍵的值。地圖

回答

1

在java中,您不能分別返回多個值。你可以做的是,你可以添加所有要返回到列表的值,然後將引用返回到列表

事情是這樣的:

List<Double> doubleList = new ArrayList<>(); 
doubleList.add(max); // index 0 
doubleList.add(maxelement); // index 1 
doubleList.add(minelement); // index 2 

return doubleList; 

你將不得不改變方法簽名以及如何調用此方法。

+0

嗨,這不會影響該方法的複雜性? – Katherine

+0

不是。一點也不。添加到'ArrayList'就是'O(1)',所以,如果要添加要返回的'k'值,'k'是* n *的獨立*。所以,你的時間複雜度不會改變:) – TheLostMind

+1

非常感謝你:) – Katherine

3

沒有它不可能返回多個項目。但是你可以創建這些項目的一個對象,你可以返回它。

+0

它似乎你在正確的軌道上,但你需要擴大你的答案和expalin更好 –

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); 
} 
相關問題