# CS21: Quiz 5 Study Guide

### In addition to the concepts below, you should also know the concepts from Quiz 1, Quiz 2, Quiz 3, and Quiz 4. Many of the earlier concepts -- especially functions -- are fundamental to what we've been studying recently.

#### You should understand the following terms:

• Top-Down Design
• Function stub
• Searching: linear vs binary search
• Analysis of algorithms (number of steps)
• linear, logarithmic, and quadratic algorithms

#### Practice problems:

1. Imagine you are writing a function to process grade data (call it nameAndGrade()). Write a function stub to process a string such as "jeff,11-15-2013,97.5" and return a list with just the name and grade: ["jeff", 97.5]. Implement your function and test it with the following code:
```  print nameAndGrade("jeff,11-15-2013,97.5")
```
2. True/False questions:
• Linear search requires a number of steps proportional to the size of the list being searched (T/F)
• The python in operator performs a binary search (T/F)
• Binary search is an NlogN algorithm (T/F)
• The number of times N can be divided by 2 is log base-two of N (T/F)
3. Approximately how many iterations will binary search need to find a value in a list of 1 million items?
4. Place these algorithm classes in order from best to worst: N, logN, N*N, NlogN
5. What is log(1024,2) in python? What about log(2048,2)?
6. How many steps are required for each of the following?
```#############################################
for i in range(n):
for j in range(n):
print i, j
#############################################
while n > 1:
print n
n = n/2
#############################################
for i in range(n):
for j in range(10):
print i, j
#############################################
```
7. Show the index values for low, high, and mid for each step in searching the list L for the value x using binary search.
```x = 99
L = [-20, -12, -4, 1, 7, 44, 45, 46, 58, 67, 99, 145]     low   mid   high
0    1   2  3  4   5   6   7   8   9  10   11      ----------------

```

8. Given the following assignments:
```   ls = ["fish", "squirrel", "cat", "dog", "monkey", "pony"]
s = "a,b,c,d,e"
```
What are the value and type of the following expressions:
```  (1) ls[3]
(2) ls[3] > "apple"
(3) ls[3][1]
(4) 'b' < 'f'
(5) len(ls[5])
(6) range(len(ls))
(7) range(len(ls[0]))
(8) s.split(",")

```