CS 501: Homework 1 Problem 1. Consider the following loop construct: X := 1 repeat Y := N while Y > 0 do . . . // something (the ellipsis) Y := Y - 1 endwhile X := X + X until X > N * N Categorize its efficiency in terms of variable N using the big-O notation. Also, assume that the statements represented by the ellipsis require four main memory accesses with each access requiring 1 microsecond, and two disk file accesses with each requiring 1 millisecond. Express in milliseconds the amount of time this construct would require to execute if N = 1000. Problem 2. Design a program that allows you to experiment with different sort algorithms. This program should allow you to easily plug-in new sorting algorithms and compare them. For this homework, you will work with insertion, selection and bubble sorts (more sorts will be added later). Assume that input data is generated randomly and stored in a text file. You will experiment with your program in two steps: Step 1: Experimenting with a prototype data (integers from 1 to 10) to ensure that your implementation works correctly. The results must be reported in a table format (not generated by the program, but collected manually from multiple program runs) in the a Word document as follows: best case worst case average case char.1...char.N char.1...char.N char.1...char.N alg.1 ... .... ... ... ... ... alg.2 ... .... ... ... ... ... ... alg.N ... .... ... ... ... ... Step 2: Experimenting with a large data set of 2000 elements. The results must be reported in the same table format. In adition, in the report, explain the empirical results generated by your program comparing them to the known theoretical results paying special attention to any inconsistensies. Must submit for grading: an UML diagram of the program design, the java code, the random text file(s) generated by an independent module (you may need multiple random text files to better characterize the average efficiency of the respective algorithm), the report as a Word document.