






Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
This exam consists of two parts. Part I has 5 multiple-choice questions worth 3 points each. Part II consists of 3 problems; show all your work on these ...
Typology: Exams
1 / 12
This page cannot be seen from the preview
Don't miss anything!
name ____________________________________________
This exam consists of two parts. Part I has 5 multiple-choice questions worth 3 points each. Part II consists of 3 problems; show all your work on these problems so that partial credit may be awarded if your final answer is wrong but your reasoning is partially correct.
You have 60 minutes to complete the exam. The questions are worth a total of 50 points. In order to properly budget your time, plan on spending one minute per point.
You may use a single 8.5-inch x 11-inch sheet of notes (handwritten on both sides). Please turn off and put away all other materials (including phones and watches). Do all your work on the exam itself. Keep everything stapled together. Good luck!
Problem Max. Score SCORE I 15 II-1 12 II-2 11 II-3 12 TOTAL 50
Answers to Part I: question: 1 2 3 4 5 answer:
Write your answer in the table at the bottom of the cover sheet.
25 56 18 20 12 9 15
Which algorithm will cause the array to be ordered
18 20 12 9 15 25 56
at an intermediate stage in the sorting process?
A. Shell sort (initial increment = 3) B. insertion sort C. bubble sort D. quicksort (initial pivot = 20) E. selection sort
public static void sort(double a[]) { int i, j, n; double temp;
n = a.length; for (i = 1; i < n; i++) { temp = a[i]; j = i; while (j >= 1 && a[j-1] > temp) { a[j] = a[j-1]; j--; } a[j] = temp; } }
In the worst case, the number of times that the condition a[j-1] > temp is evaluated grows in proportion to what function of n?
A. n B. n! C. n*log(n) D. log(n) E. n^2
public class Node { public int datum; public Node next; }
In all of functions shown below, the parameter first refers to the first node in the linked list, if there is one, and has the value null otherwise. Which of the following functions correctly inserts a value x at the front of the linked list and returns a reference to the new front of the linked list?
I. public Node insertFront(Node first, int x) { first = new Node(); first.datum = x; first.next = first; return first; }
II. public Node insertFront(Node first, int x) { Node n = new Node(); n.datum = x; n.next = first; return n; }
III. public Node insertFront(Node first, int x) { Node n = new Node(); first = n; n.datum = x; n.next = first; return first; }
A. I only B. II only C. III only D. I and II E. II and III
II-1. Sorting ( 12 points total; 3 points per part )
The array below is to be sorted in ascending order.
17 53 71 62 36 46 41 23 12
a. After the initial partition step of the version of quicksort discussed in lecture, with 36 as the pivot, how would the array be ordered?
b. Assume that the initial iteration of Shell sort uses an increment of 3. After that initial iteration, how would the array be ordered?
c. After the initial iteration of bubble sort, how would the array be ordered?
d. On how many of the passes of insertion sort would the inner loop be skipped? Explain your answer briefly.
II-3. Recursion and Algorithm Analysis (12 points total)
a. 8 points Write a recursive method named sumReciprocals that takes as its only argument a non-negative integer, n, and returns a double value that is the sum of the reciprocals of the integers from 1 to n. For example, sumReciprocals(2) should return 1.5, which is 1/1 + 1/2, and sumReciprocals(4) should return approximately 2.0833, which is 1/1 + 1/2 + 1/3 + 1/4. You do not need to perform any error-checking on the value of the parameter. No use of iteration is allowed.
public static double sumReciprocals(int n) {
b. 4 points Give a big-O expression for the number of method calls that are made when using your answer from part (a) to evaluate sumReciprocals(n).
S-I. Multiple Choice
A. The increments should be decreasing. B. The increments should be relatively prime. C. The final increment should be 1. D. The increments should be prime numbers. E. All the statements above are true.
3 0 2 4 5 8 7 6 9
Which of the following statements is correct?
A. 5 could be the pivot, but 7 could not be. B. 7 could be the pivot, but 5 could not be. C. Neither 5 nor 7 could be the pivot. D. Either 5 or 7 could be the pivot.
Which one of the following operations would be inefficient to carry out when there are a large number of elements in the linked list?
A. insertion at the end to which front refers B. insertion at the end to which rear refers C. deletion from the end to which front refers D. deletion from the end to which rear refers E. test for an empty linked list
35 17 29 front null
rear
A. 5000 B. 10000 C. 20000 D. 40000 E. the value would depend on the contents of the array
void key_function(int i) { for (int alternative = i; alternative < n; alternative++) { do_alt(alternative);
undo_alt(alternative); } } The line ************* should be replaced by:
A. do_alt(alternative + 1); B. key_function(alternative); C. key_function(alternative + 1); D. key_function(i); E. key_function(i + 1);
S-II-1. Sorting a. Describe, and illustrate with a simple example, the distinctive feature of the Shellsort algorithm.
b. Let’s say that you need to sort a collection of data that is stored in a singly linked list. Would Shellsort be a good algorithm to adapt for this problem? Why or why not?