This is a very simple question but I’m struggling too much to understand the concept completely.
I’m trying to understand the difference between the following statements:
- There exists an algorithm which sorts an array of n numbers in O(n) in the best case.
- Every algorithm sorts an array of n numbers in O(n) in the best case.
- There exists an algorithm which sorts an array of n numbers in Omega(n) in the best case.
- Every algorithm sorts an array of n numbers in Omega(n) in the best case.
I will first explain what is driving me crazy. I’m not sure regarding 1 and 3 – but I know that for one of them the answer is correct just by specifying one case and for the other one the answer is correct by examining all the possible inputs. Therefore I know one of them must be true just by specifying that the array is already sorted but I can’t tell which.
My teacher always told me to think about it like we are examining who’s the heighest guy in the class and again by one of these options(1,3) it’s enough to say that he is and there is no reason to examine all the class.
I do know that if we were to examine the worst case then none of these statements could be true because the best sorting algorithm without any assumptions or additional memory is Omega(nlogn).
IMPORTANT NOTE: I’m not looking for a solution (an algorithm which is able to do the matching sort) – only trying to understand the concept a little better.
Thank you!
The difference, obviously, is in terms “O” and “Omega”. One says “rising not faster than”, second says “rising not slower than”.
Make sure that you understand the difference between those terms, and you’ll see the difference in the sentences.
1 and 3 both state completely different things, just as 2 and 4 are.
Look at those (those are NOT the same!):
Do you sense the difference now? With O/Omega the difference is similar, but the subject of investigation differs. The examples above say about different performance in some point/case, while O/Omega notation tell you about the performance, related to the size of data, but only if the data “is large enough”, be it three items or milions, and it drops constant factors:
For small amounts data, second one is obviously very very better than first. But as the quantity of data rises, soon the first starts to be much better!
Rewriting the above examples into “more proper” terms, that are more similar to your original sentences:
I hope that this helps you with “seeing”/”feeling” the difference!