Обозначение Big-O имеет дело с верхними границами, технически говоря, алгоритм - это O (g (n)) для всех без исключения g (n), которые асимптотически растут быстрее, чем f (n), поэтому, если алгоритм равен O (n) ) это должны быть O (n ^ 2) и O (n ^ 99).
Нотация Little-o имеет дело с верхними границами сегодня вечером, то есть наименее быстро растущим набором функций, которые растут быстрее, чем f (n). Следовательно, неверно говорить, что f (n) равно o (n ^ 2), если это o (n).
Редактировать (чтобы ответить на комментарий):
Если дан алгоритм A и надежно сказано, что A - это O (n ^ 2), то есть вероятность, что A - это O (n) (или что-то еще), но вам придется проанализировать A, чтобы выяснить это самостоятельно. И наоборот, если достоверно сказано, что A было o (n ^ 2), оно не может быть O (n).