2016-12-03 5 views
0

Kann mir jemand helfen, die Komplexität der Zeit für den folgenden Code zu verstehen. Das Programm dient zum Verschieben aller Nullen nach rechts von einem Array.Verständnis der Zeit Komplexität

class TestClass { 
    public static void main(String args[]) throws Exception { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

     String []s = br.readLine().split(" "); 

     int a[] = new int[s.length]; 

     for(int i=0;i<s.length;i++) 
      a[i]=Integer.parseInt(s[i]); 


     int j= a.length-1; 
     int i=0; 

     while(j>=0 && i<a.length-1 && j-i>0){ 
       if(a[i]==0){ 
        while(a[j]==0) 
        j--; 
        int temp=a[i]; 
        a[i]=a[j]; 
        a[j]=temp; 
       } 
       i++; 
     } 

     for(int k:a) 
      System.out.print(k+" "); 

    } 
} 

Antwort

0

Rechenzeitkomplexität wird schwierig sein, wenn wir das versuchen schließen a[i]=Integer.parseInt(s[i]); da in Integer class, parseInt() Verfahren läuft in einem while loop und in Abhängigkeit von der Länge des Durchgangs String, wird es gibt verschiedene Zeitkomplexität, aber wenn wir nehmen an, dass es O (F (q)) dauert, die Zeitkomplexität Ihres Codes wird O(s.length^2)+O((s.length)*O(F(q))

sein