Today I was reading a great article from Julienne Walker about sorting – Eternally Confuzzled – The Art of Sorting and one thing caught my eye. I don’t quite understand the part where the author proves that for sorting by comparison we are limited by Ω(N·log N) lower bound
Lower bounds aren’t as obvious. The lowest possible bound for most sorting algorithms is Ω(N·log N). This is because most sorting algorithms use item comparisons to determine the relative order of items. Any algorithm that sorts by comparison will have a minimum lower bound of Ω(N·log N) because a comparison tree is used to select a permutation that’s sorted. A comparison tree for the three numbers 1, 2, and 3 can be easily constructed:
1 < 2 1 < 3 1 < 3 2 < 3 3,1,2 2,1,3 2 < 3 1,2,3 1,3,2 2,3,1 3,2,1Notice how every item is compared with every other item, and that each path results in a valid permutation of the three items. The height of the tree determines the lower bound of the sorting algorithm. Because there must be as many leaves as there are permutations for the algorithm to be correct, the smallest possible height of the comparison tree is log N!, which is equivalent to Ω(N·log N).
It seems to be a very reasonable until the last part (bolded) which I don’t quite understand – how log N! is equivalent to Ω(N·log N). I must be miss something from my CopmSci courses and can’t get the last transition. I’m looking forward for help with this or for some link to other evidence that we are limited Ω(N·log N) if we use sorting by comparison.
You didn’t miss anything from CompSci class. What you missed was math class. The Wikipedia page for Stirling’s Approximation shows that log n! is asymptotically n log n + lower order terms.