HW1

CS310 Homework 1

1. NULL (There is no question 1)

2. Give the big O for each of the following:

 a.
	sum = 0;
	for (int i=0; i < n; i++)
	{
	  for (int j=0; j < i; j++)
	  {
	    sum += 1;
	  }
	}

 b.
	sum = 0;
	for (int i=0; i < n*n; i++)
	{
	  for (int j=0; j < n*n; j++)
	  {
	    sum += 1;
	  }
	}

 c.
	sum = 0;
	for (int i=0; i < n*n; i++)
	{
	  for (int j=0; j < i; j++)
	  {
	    sum += 1;
	  }
	}

3
a. Does O(log n) = O(log_2 n)? Why? (hint: recall the rules of logarithms)
b. Does O(log n) = O(log n^2)? Why?

4
a. Does O(2^n) = O(3^n)? Why?
b. Does O(2^n) = O(2^(n/2))? Why?

5
a. Order the following functions by growth rate:

N, square root of N, N^1.5 , N^2, N log N, N log log N, N log_2 N, N log(N^2), 2^N , 2^(N/2), 37, N^3, and N^2 log N

b. Indicate which functions grow at the same rate.

6
Actual interview question. What is the output? Give a detailed explanation for each println statement.

public class O
{
    static int x = 1;

    public static void main(String args[]){
        O o = new O();
        o.call(3);
    }

    public void call(int x){
        O o = new O();
        this.x = 5;

        System.out.println("Output: " + x);
        System.out.println("Output: " + O.x);
        System.out.println("Output: " + o.x);
    }
}

7
a. What are the implementation differences between abstract classes vs interfaces?
b. Difference between implements and extends? Can you implement multiple interfaces or extend multiple classes?
c. Describe a use case for each.

8.

public static void main(String args[])

a. Why must main be public? Why not private?
b. Why must main be static? Why not a normal method?
c. What’s the void for, and what are the args?

9.
Show the results of the following sequence:

	add(4)
	add(8)
	add(1)
	add(6)
	remove()
	remove()

for the following data structures:
a. Stack
b. Queue
c. Priority queue (1 is top priority)

10.
What would the output of the following code be if S was a:
a. Stack
b. Queue

S.add("First");
S.add("Second");
S.add("Third");
for (String i : S) {
   System.out.println(i);
}

Due: 6/2 @5pm
Turn in answers digitally to the cs310/hw1 folder with the filename “memo.txt”