These are a sample of questions that might appear on Exam 1.
Define the following terms:
(3) backtracking
(2) base case (for recursion)
(2) recursive case
(5) big O
(2) best case analysis
(2) average case analysis
(2) worst case analysis
Give code for:
(10) Sequential search of an array
(10) Sequential search of a sorted array
(10) Binary search of a sorted array
(10) Selection sort
(10) Insertion sort
(15) Merge of two adjacent segments of an array
(10) Mergesort given a predefined merge routine
(10) Write a function that takes an array of characters S of length N and
returns 1 if that array contains a palindrome and 0 otherwise. A palindrome
is a sequence of characters that is the same written backwards.
(10) Write a recursive solution to the previous problem.
(10) Write a recursive function that sums up the squares of all the numbers
from 1 to N (i.e., SumSqrs(N) returns 1^2 + 2^2 + 3^2 + ... + N^2).
(15) Given a 2D character array A:
0 1 2 3
0 e e X X
1 X e e e
2 X e X X
3 e e e X
and the function Visit:
void Visit(char A[][4], int r, int c) {
if (A[r][c] == 'e') {
A[r][c] = '.';
printf("<%d,%d> ",r,c);
if (r > 0) Visit(A,r-1,c); /* 1 */
if (c > 0) Visit(A,r,c-1); /* 2 */
if (r < 3) Visit(A,r+1,c); /* 3 */
if (c < 3) Visit(A,r,c+1); /* 4 */
}
}
the program will print:
<0,0> <0,1> <1,1> <2,1> <3,1> <3,0> <3,2> <1,2> <1,3>
if we call Visit(A,0,0)
how could you reorder the statements labeled /* 1 */ to /* 4 */ to
print:
<1,1> <1,2> <1,3> <2,1> <3,1> <3,0> <3,2> <0,1> <0,0>
if we call Visit(A,1,1)?
How about:
<1,1> <2,1> <3,1> <3,2> <3,0> <0,1> <0,0> <1,2> <1,3>
(2 each) Give the Big-O notation (the growth-rate function) for each of the
following formulas:
2
N + 3N + 4NlogN + 5/N
2 3 N
5N + 25N + 3N + 4
2 2
3N logN + 5N + NlogN + 2N
(15) Give a situation where each of the sorts discussed in class (insertion,
selection, and merge) is optimal. You should include a discussion of the
performance characteristics of the sorting algorithm that backs up your
answer.