Question une est bonne. Question 2, je suppose que votre réponse est ce qu'ils recherchent, mais si par n^3 vous voulez dire O (n^3), vous ne pouvez pas y répondre (à moins que ce soit une utilisation de "l'efficacité algorithmique" I je ne suis pas familier avec).
La complexité Big-O donne une limite asymptotique au comportement de l'algorithme. On sait, pour "grand" n, que O (n^3) est plus grand que le temps nécessaire pour exécuter l'algorithme sur l'entrée de taille n. Notez les deux mises en garde - "grand n" et "limite asymptotique". Il n'y a rien pour empêcher une entrée de taille 1000 de prendre deux fois plus de temps qu'une entrée de taille 2000, tant qu'il existe des m tels que pour tout n> m, n^3 limite le temps d'exécution. De plus, rien n'empêche l'algorithme de prendre 1 nanoseconde sur chaque entrée, car n^3 est toujours lié à l'exécution - c'est juste très pessimiste.
C'est pourquoi la notation O grand est souvent d'utilisation limitée dans des situations pratiques. Il donne une vue d'ensemble du «pire des cas», mais ne décrit aucun scénario d'utilisation donné. Pour un ensemble de classes de complexité plus pratique (mais souvent négligé), google pour "Big theta".
Si ce sont des devoirs, ce sont des questions terribles. –
vos deux réponses sont correctes. –