Java Assignment Details
To sort and merge multiple queues, where the input queues were to be read from a file.
How to Solve Such Problems in Java
First of all, to start with Java assignment we have to look at the requirement. What is provided to us, what is needed to do. In programming there are plenty of way to do the same thing but we need to identify which way to use in specific condition is better. Once we decide the approach we start creating a pseudo code which has the overall map of entire program. Here we need to take care of all the situations where this may fail so we need to identify all the loopholes and cover up all them before actual implementation. Then we start working on implementing actual Java code.
Java Assignment Solution
- Read a filename from user.
- Read the file line wise.
- Process the file and store the available queues as unsorted queue in a list
- Process each queue and sort them.
- Store the sorted queue in a new Array of Lists
- Merge the sorted queues & display the final result.
We need to read a file and store the queues, used the readList method() from FileLine class (modified to return the processed output queues). And then to sort the queue used an algorithm:
while not unsortedqueue.isEmpty() do smallest = unsortedqueue.dequeue() ; queuelength = unsortedqueue.length() ; For i = 1 to queuelength do element = unsortedqueue.dequeue() ; if smallest > element then unsortedqueue.enqueue(smallest) ; smallest = element ; else unsortedqueue.enqueue(element) ; endif endfor sortedqueue.enqueue(smallest) ; endwhile The output was a List of sorted queues
Processing this output list and merging them into one sorted output list using the following algorithm:
totalelements = 0 for each linkedqueue in sortedqueue do totalelements += linkedqueue.size() end for while result.size()<totalelements do lowestqueue=null, i=0 for each linkedqueue in sortedqueue do if linkedqueue is not empty then if lowestqueue == null then lowestqueue = linkedqueue; else if linkedqueue.first() <= lowestqueue.first() then lowestqueue = linkedqueue; end if end if end for result.enqueue(lowestqueue.first()); lowestqueue.dequeue(); endwhile
Display the output.
Got a similar complex Java problem? Let our experts deal with it!