2014-01-19 2 views
-1

Это первый раз, когда я слышал о сложности простой функции, поэтому я смущен. Я прав?Какова сложность простой функции Set, Get, toString?

Это мой класс, мне нужно написать сложность для каждой функции, но я думаю, что это все O (1).

public class PolyNode 
{ 
    private int _power; 
    private double _coefficient; 
    private PolyNode _next; 

    public PolyNode (int power, double coefficient) 
    { 
     if (power < 0) 
     { 
      _power = 0; 
      _coefficient = 0; 
      _next = null; 
     } 
     else 
     { 
      _power = power; 
      _coefficient = coefficient; 
      _next = null; 
     } 
    } 

    public PolyNode(int power, double coefficient,PolyNode next) 
    { 
     if (power < 0) 
     { 
      _power = 0; 
      _coefficient = 0; 
      _next = next._next; 
     } 
     else 
     { 
      _power = power; 
      _coefficient = coefficient; 
      _next = next._next; 
     } 
    } 

    public PolyNode(PolyNode p) 
    { 
     _power = p._power; 
     _coefficient = p._coefficient; 
     _next = p._next; 
    } 

    public int getPower() 
    { 
     return _power; 
    } 

    public double getCoefficient() 
    { 
     return _coefficient; 
    } 

    public PolyNode getNext() 
    { 
     return _next; 
    } 

    public void setCoefficient (double coefficient) 
    { 
     _coefficient = coefficient; 
    } 

    public void setNext(PolyNode next) 
    { 
     _next = next; 
    } 


    public String toString() 
    { 
     String st = ""; 

     if (_coefficient == 0) 
      return ""; 
     else if (_power == 0) 
     {   
      st += _coefficient; 
      return st; 
     } 
     else if (_power == 1 && _coefficient != 1 && _coefficient != -1) 
      return _coefficient + "x"; 
     else if (_coefficient == 1 || _coefficient == -1) 
     { 
      if (_coefficient == 1 && _power != 0) 
      { 
       if (_power == 1) 
        return "x"; 
       else 
        return "x^" + _power; 
      } 
      else if (_coefficient == 1 && _power == 0) 
       return "1"; 
      else if (_coefficient == -1 && _power != 0) 
       return "-x^" + _power;   
      else if (_coefficient == -1 && _power == 0) 
       return "-1"; 
     } 
      return _coefficient + "x^" +_power;   
    } 
} 
+3

нет петли, нет рекурсии : O (1) звучит правильно. – assylias

+0

Пожалуйста, следуйте надлежащим соглашениям об именах Java. Кроме того, все, что требует времени для завершения, имеет сложность. Просто, мы склонны игнорировать его в некоторых случаях. – TheLostMind

+0

Единственное, что я задавал, это 'toString', который содержит double to преобразование строки и добавление строки, но на входные данные не влияют, поэтому O (1) все еще кажется правильным. – DrYap

ответ

3

Поскольку у вас нет никаких циклов, я предполагаю, что сложность O (1). Если у вас есть цикл, как это:

for(int i=0;i<n;i++){} 

Это будет O (N), и это:

for(int i=0;i<n;i++) 
    for(int j=0;j<n;j++) 

будет O (п * п)

Смежные вопросы