EXERCISES ON COMPLEXITY
1. Sedgewick, Exercise 2.2
2. (a) Give the complexity of the following algorithm for
printing a string in reverse order.
N = strlen(word);
for (i = 0; i < N; i++)
printf("%c", word[N-i-1]);
(b) Give the complexity of the following algorithm for
printing a string in reverse order.
for (i = 0; i < strlen(word); i++)
printf("%c", word[strlen(word)-i-1]);
3. Give the complexity (using big Oh notation) of the shuffling
algorithm in Lecture P2.
4. (a) Give the complexity (using big Oh notation) of the
nearest-insertion heuristics in the TSP assignment.
(b) Give the complexity (using big Oh notation) of the
smallest-insertion heuristics in the TSP assignment.
5. Give a O(N log N) algorithm for computing the median (or mode)
of a sequence of N integers. Hint: sort first.
6. (a) Give a O(N) algorithm for sorting a sequence of N integers that
are between 0 and 99.
(b) Give a O(N) algorithm for computing the median (or mode)
of a sequence of N integers that are between 0 to 99.
7. (a) Given a sequence of N real numbers, find the pair of integers that
are closest in value. Give a O(N^2) algorithm. Give a O(N log N)
algorithm.
(b) Given a sequence of N real numbers, find the pair of integers that
are farthest apart in value. Give a O(N) algorithm.
8. (challenge for the bored) Design a O(N log N) algorithm to read in
a list of words and print out all anagrams. For example, the
strings "comedian" and "demoniac" are anagrams of each other.
Assume there are N words and each word contains at most 20 letters.
Designing a O(N^2) algorithms should not be too difficult, but
getting it down to O(N log N) requires some cleverness.