Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Computer Science E-22 Practice Midterm Exam, Exams of Algorithms and Programming

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

2022/2023

Uploaded on 05/11/2023

rothmans
rothmans 🇺🇸

4.7

(20)

252 documents

1 / 12

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
David G. Sullivan, Ph.D. page 1 of 12
name ____________________________________________
Computer Science E-22
Practice Midterm Exam
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:
pf3
pf4
pf5
pf8
pf9
pfa

Partial preview of the text

Download Computer Science E-22 Practice Midterm Exam and more Exams Algorithms and Programming in PDF only on Docsity!

name ____________________________________________

Computer Science E-

Practice Midterm Exam

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:

Part I. Multiple-choice (3 pts. each)

Write your answer in the table at the bottom of the cover sheet.

  1. The following array is to be sorted in ascending order:

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

  1. The following method/function sorts an array of floating-point numbers:

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

  1. You have a singly linked list constructed out of nodes defined as follows:

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

PART II: Answer all three questions in the space provided.

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).

Supplemental Practice Problems

S-I. Multiple Choice

  1. Which of the following statements is not true about the increments used in Shell sort?

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.

  1. Here is an array that has just been partitioned by the first step of quicksort:

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.

  1. The diagram below suggests how we could implement a double-ended linked list, in which we maintain a reference to both the first and last nodes in the linked list.

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

  1. Through experiment, you determine that selection sort performs 5000 moves when sorting a array of some size k. If you doubled the size of the array to 2k, approximately how many moves would you expect it to perform?

A. 5000 B. 10000 C. 20000 D. 40000 E. the value would depend on the contents of the array

  1. A program for recursive backtracking includes a method similar to this one:

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?