You don't determine asymptotic growth by eyeballing it. There are formal definitions for each type of asymptotic growth relation that explain exactly and precisely what they mean. You determine whether two functions fit a given relation by determining mathematically if they satisfy the formal definition for the relation.
For example, one of several equivalent formal definitions for Big-O is as follows:
f = O(g) if and only if lim [ n -> inf ] ( f(n) / g(n) ) < inf
So, for example, if f(n) = n, and g(n) = n^2, you can observe that the limit as n -> infinity of n/n^2 = 0, and so f = O(g).
Or, if f(n) = n and g(n) = 2n, you can observe that as n-> inf, n / 2n -> 1/2 < inf, so again f = O(g).
However, if f(n) = n and g(n) = sqrt(n), you can observe that the limit as n -> infinity of n / sqrt(n) = infinity, so f != O(g).
Your example f and g is tricky to because sine oscillates between -1 and 1 as n increases. But Wolfram Alpha tells me that the limit in question is infinity, so sqrt(n) != O(n^(sin(n)).
Each other asymptotic growth relation has a similar formal definition that you can test to see if two functions satisfy it with respect to each other.
Edit:
It seems like you're looking for rules of thumb. Here's a quick and easy way to determine asymptotic order for relatively simple functions f and g. Consider the highest power of n in each function:
- If the highest power is the same, then f = O(g), g = O(f), f = Omega(g), g = Omega(f), f = Theta(g), g = Theta(f)
- If the highest power in f is smaller than the highest power in g, then f = O(g), f = o(g), g = Omega(f), g = omega(f)
- If the highest power in f is larger than the highest power in g, then f = Omega(g), f = omega(g), g = O(f), g = o(f)
Of course, if the functions are not polynomials in n, or are more complex and it's not easy to determine what the highest powers are (e.g. your example using sine), you will still have to revert back to the formal definition.
Some things that are always true:
- Theta is by definition the conjunction of O and Omega. f = O(g) ^ f = Omega(g) <=> f = Theta(g) [where ^ represents logical "and"]
- The "little" relations are stronger than the "big" relations. This means that f = o(g) => f = O(g) and f = omega(g) => f = Omega(g), but the reverse directions are not true.