1. Assess how the choice of data structures and algorithm design methods impacts the performance of programs.
Write programs using object-oriented design principles.
Solve problems using data structures such as linear lists, stacks, queues, hash tables, binary trees, heaps and binary search trees
. Solve problems using algorithm design methods such as the greedy method, divide and conquer, dynamic programming and backtracking.
Download the zip file containing an Eclipse project. Implement your solutions to the problems below in the Eclipse project. The project also contains unit tests which you should use to test your work.
1. Hashtable. Complete the implementation of the hashtable in the class ci284.ass2.htable.Hashtable.java. When a new Hashtable is created, the array should be initialised with a size which is the smallest prime number larger than or equal to the requested initial capacity. The default probe type should be LINEAR_PROBE. Store objects in the array using the Pair class to store both key and value. When storing a new key/value pair, use the findEmpty method to find an unoccupied location starting the search at the value found by hashing the key and with a stepNum of zero. If this position is occupied, use the getNextLocation method (which is implemented for Version 2 – 16 Oct 12 you) to find the next location to search based on the probe type being used, and call findEmpty again with the new location. You will also need to use the getNextLocation method when implementing find, which searches for an existing value – again, start the search at the value calculated by hashing the key. If there is no Pair object at that location, the key was not found. If there is a Pair object at that location then either its key matches the one we're looking for, in which case return the value associated with the Pair, or it doesn't match. If it doesn't match, we need to find the next location to search using getNextLocation, and call find again with this new value.
2. Complexity. Using a multi-line comment at the top of the Hashtable class, describe the complexity of the get and put methods in your implementation, include the best, worst and average-case scenarios. What happens to the complexity as the load factor increases, and what would the worst-case complexity be if the load factor were increased to 1.0?