So here is the question:
Suppose you have 100 thousand integers which ranges from 1 to 1 million. Please sort out the integers. The time complexity should
Sounds like a straightforward counting sort.
Space is constant. Runtime is O(n).
The hint should be that they range from 1 to 1 million.
See pigeonhole sort
Use count sort. Just count all of them ( O(n) ), and then create fill the result array ( O(n), again).
Since the problem has fixed size and includes a finite set of instances, any sorting algorithm will terminate in O(1). You should tell the tester to go back to algorithm analysis school. One possible way to generalize this problem to an infinite set is: you have an array of size n with numbers ranging in [0, 10n]. Can you sort it in O(n)? That makes sense to me. Or you could parametrize the problem with the size of the array and the range of the integers and come up with some O(f(n,k)) bound. The problem is when you get a question like this in an interview, what do you do? Do you try to guess what the interviewer would like to hear or do you say something like "let me rephrase your question"? Or you just scoot towards the exit with a big smile?
You have to use any known sorting algorithms with complexity O(n)
Is there an O(n) integer sorting algorithm?