Disclaimer: I am very familiar with big O notation and find it intuitive.
However, I think the notation \lesssim or << which is common in upper level math courses, but not often discussed in undergraduate texts is much easier to explain, and should be introduced in lower level courses. You write
f(n) \lesssim g(n)
if there is an absolute constant C such that
f(n) \le C g(n)
the meaning is completely clear and by rearranging an expression it can replace big O notation. For example instead of writing
It depends on the author/field. In analysis sometimes f(n) <<g(n) means f(n) = o(g(n)), but other times (especially in discrete math) f(n) << g(n) means f(n) = O(g(n)).
Due to this ambiguity, I think the notation
f(n) ~< g(n) or in latex f(n) \lesssim g(n) is more clear
However, I think the notation \lesssim or << which is common in upper level math courses, but not often discussed in undergraduate texts is much easier to explain, and should be introduced in lower level courses. You write
f(n) \lesssim g(n)
if there is an absolute constant C such that
f(n) \le C g(n)
the meaning is completely clear and by rearranging an expression it can replace big O notation. For example instead of writing
f(n) = g(n) + O(h(n))
you write
|f(n) - g(n)| \lesssim h(n)
https://math.stackexchange.com/questions/1793395/who-introdu...