2017-08-09 3 views
0

J'ai commencé à étudier les structures de données et les algorithmes il y a quelques jours et j'essaie toujours de saisir les concepts. J'apprends sur les notations Big-O. Je comprends ce qu'est O (1) -Constant Time Complexity et j'ai des questions.Grande notation O pour l'extrait de code ci-dessous

void Method1(int n) { 
    int a = 10; 
    int b = 20;   
    int x = a + n; 
    int y = b * n; 
    Console.Writeline("{0}{1}", x, y); 
} 

La complexité du code ci-dessus est O (1) pour une très grande valeur de n. Nous utilisons la valeur de N plutôt que de traiter N. La méthode ci-dessous aura-t-elle toujours la même complexité où n et m sont de très grands nombres en tant qu'intrants.

void Method1(int n, int m) { 
     int a = 10; 
     int b = 20;    
     int x = a + n; 
     int y = b * m; 
     Console.Writeline("{0}{1}", x, y); 
    } 
+1

[Comment trouver la complexité temporelle d'un algorithme] (https://stackoverflow.com/questions/11032015/how-to-find-time-complexity-of-an-algorithm) – hatchet

Répondre

0

Cela aura la même complexité par rapport aux entrées, car vous faites les mêmes opérations. Si vous appelez simplement votre seconde méthode avec la même valeur deux fois, elle devient identique à la première méthode.

Notez cependant que certaines implémentations ne être O (1) pour très grandes entrées. C'est parce que "grand entier" est un type de données qui s'étend avec l'ampleur de l'entrée; ces opérations arithmétiques sont O (log N).