2017-12-20 7 views
0

*こんにちは、私はこのトピックをカバーし始めたので、ここで何をすべきか分かりません。本の例は私を助けてくれません。 プログラムは次のとおりです。複雑さは、例えば、N + 1である場合どのようにアルゴリズムの時間の複雑さを見つけるのですか?

public static Stack<Queue<Integer>> qq(Stack<Queue<Integer>> q1) 
    { 
     Stack<Queue<Integer>>copy=new Stack<Queue<Integer>>(); // 1 
     Stack<Queue<Integer>>copy1=new Stack<Queue<Integer>>(); // 1 
     while(!q1.isEmpty()) // n+1 
      copy.push(q1.pop()); // n 
     while(!copy.isEmpty()) // n+1 
     { 
      q1.push(copy.top()); // n 
      copy1.push(copy.pop()); // n 
     } 
     while(!copy1.isEmpty()) // n+1 
     { 
      Queue<Integer>q=new Queue<Integer>(); // n 
      copy.push(q); // n 
      int n1=copy1.top().remove(); // n 
      while (!copy1.top().isEmpty()==true) 
      { 
       for (int i=n1+1;i<copy1.top().head();i++) 
        copy.top().insert(i); 
       n1=copy1.top().remove(); 
      } 
      copy1.pop(); // n 
     } 
     while(!copy.isEmpty()) // n+1 
      copy1.push(copy.pop()); // n 
     return copy1; // 1 

、私たちの先生は、私たちはそのようにそれを残して、nに簡素化しないようにしたいと思います。

私はそれを書いていない複雑さを計算する方法がわかりません、残りは正しいと思います。誰も私にそれを説明できますか? ありがとうございました!

答えて

0

時間の複雑さは、プログラム/コードの実行に要する時間によって異なります。 大雑把(漸近的に) あなたのコードは、任意のループが、それは一定の時間がかかる持っていない場合、すなわちO(1) あなたのコードはループを持っており、それは、n個の時間のために実行している場合は、その後、プログラムの時間計算量はO(n)の

です

この場合、あなたのコードはn + 1回実行されているので、あなたのプログラムの時間複雑さはO(n) - 漸近的であると結論づけることができます。

関連する問題