Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Another Algorithm Job-Interview

Tags:

algorithm

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 be O(n).

Anybody who shares his or her ideas is well appreciated.

like image 303
Tracy Avatar asked Oct 14 '10 08:10

Tracy


People also ask

Why are algorithms used in interviews?

Also, these algorithms are used to test the understanding of a software engineer on whether or not he knows the working of the code. Practising these problems before an interview will not only make you familiar with them but also give you confidence in explaining the solution to the interviewer.

What is an algorithm question answer?

It is easy to understand. An algorithm is a step-wise representation of a solution to a given problem. In Algorithm the problem is broken down into smaller pieces or steps hence, it is easier for the programmer to convert it into an actual program.


3 Answers

Sounds like a straightforward counting sort.

  1. Reserve memory for an array a of size 1 million
  2. Initialize all array values to 0
  3. Loop through the integers. For each integer i increment a[i] by one.
  4. Output sorted sequence by walking through the array and printing each number i for a[i] times.

Space is constant. Runtime is O(n).

like image 100
Frank Avatar answered Oct 27 '22 15:10

Frank


The hint should be that they range from 1 to 1 million.

See pigeonhole sort

like image 27
The Archetypal Paul Avatar answered Oct 27 '22 14:10

The Archetypal Paul


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?

like image 39
piccolbo Avatar answered Oct 27 '22 15:10

piccolbo