You are required to do a comparative study to compare theoretical performance with practical demonstration of the following algorithms:
1- At least three sorting algorithms with at least one of them having Big O efficiency of O(n*log n) or better. You may use algorithms discussed in the course; however, you are encouraged to include other algorithms as well.
2- At least two search algorithms with at least one of them having Big O efficiency of O(log n ) or better, for example, Hash tables. You may use algorithms discussed in the course, however, you are encouraged to include other algorithms as well.
3- The report should be of about 1,000-1500 words and of not more than about ten pages including snapshots and references etc.
4- Don't discuss the general implementation (C code) of the algorithms, however, use inline comments to reflect your understanding of the code. Similarly avoid very detailed description of algorithms, instead give appropriate references.
You must demonstrate performance with respect to at least the following parameters:
a. Number of records: small (less than 100,000), medium (~ 500,000) and large (one million or higher).
b. Randomness of the data, for example partially ordered data vs. pseudo-random data.
c. Any algorithm specific parameter, for example pivot in case of quicksort algorithm. You should analyze/comment on the performance of the algorithm with respect to any variation of such a critical parameter.
d. Discuss and EXPLAIN any variations in performance due to implementation differences of at least one sorting and one search algorithm, for example the performance differences, if any, in case of array-based implementation vs. linked- list-based implementation.
The interface of the application must be console-based, menu-driven, very similar to the snapshot given below:
Figure 1 Main interface of the application: see image.