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”