Sorting
Assume that names is an array of String objects that has been initialized with a large number of elements. Select the statement that would sort the elements in names in ascending alphabetic order.
Arrays.sort(names);
Consider the sort method shown below for selection sort: public static void sort(int[] a) { for (int i = 0; i < a.length - 1; i++) { int minPos = minimumPosition(i); swap(minPos, i); } }
the sort would work but run one more iteration
The code segment below is designed to add the elements in an array of integers. Select the expression needed to complete the code segment so that it calculates the running time elapsed. long start = System.currentTimeMillis(); int sum = 0; for (int k = 0; k < values.length; k++) sum = sum + values[k]; long runningTime = ____________________________; a) System.currentTimeMillis() b) System.currentTimeMillis() - start c) System.currentTimeMillis() + start d) runningTime + start - System.currentTimeMillis()
the total number of element visits
In Big-Oh notation, selection sort is a(n) ____ algorithm.
O(n^2)
Assume we are using quicksort to sort an array in ascending order. What can we conclude about the elements to the left of the currently placed pivot element?
they are all less than or equal to the pivot element
Assume we are using quicksort to sort an array in ascending order. What can we conclude about the indexes of two pivot elements placed in consecutive recursive calls?
they are randomly located
Consider the sort method shown below for selection sort: public static void sort (int[] a) for (int i = 0; i < a.length - 1; i++) int minPos = minimumPosition(i); swap(minPos, i);
the sort would not consider the first array element
Consider the minimumPosition method from the SelectionSorter class. Complete the code to write a maximumPosition method that returns the index of the largest element in the range from index from to the end of the array. private static int minimumPosition(int[] a, int from) int minPos = from; for (int i = from + 1; i < a.length; i++) if (a[i] < a[minPos]) { minPos = i; } return minPos; private static int maximumPosition(int[] a, int from) int maxPos = from; for (int i = from + 1; i < a.length; i++) ________________ return maxPos;
(int i =0; i < a.length -1 ; i ++)
The code segment below prints some of the elements in an array with size n. Select an expression to complete the code segment so that the resulting algorithm has O(log n) running time. for __________________________ System.out.println(array[j]);
(int j = 1; j < array.length; j =j *2)
The performance of an algorithm is most closely related to what?
...
Using a binary search, what is the maximum number of comparisons required to find a search key in a 31-element sorted array?
5
What does the first pass of selection sort do?
Locates the smallest element in the array and swaps it into the zeroth position.
What is the term used for binary search's run time?
Logarithmic run time.
What does each iteration of the insertion sort algorithm do?
Each iteration takes the next element in the unsorted portion of the array and inserts it into the sorted portion.
Which of the following sorting algorithms is the fastest?
Merge sort
Can you search the following array using binary search? int[] A = {6, 5, 4, 2, 0, 1, -1, -17};
No. Binary search can be applied to a sorted array only
Merge sort is a(n) ____ algorithm.
O (n log (n)
Binary search is an ____ algorithm.
O(log n)
What is the efficiency of merge sort?
O(n log n)
If the array is already sorted, what is the performance of insertion sort?
O(n)
If you implement a recursive linear search, its performance will be ____.
O(n)
If you implement a recursive linear search, its performance will be ____. a. O(n log (n)) b. O(n) c. O(n^2) d. O(log (n))
b. O(n)
The largestPosition method below returns the index of the largest element in the tail range of an array of integers. Select the expression that would be needed to complete the selectionSort method below, so that it sorts the elements in descending order. Finds the largest element in the tail range of an array. @param a the array to be searched @param from the first position in a to compare @return the position of the largest element in range a[from]..a[a.length - 1] private static int largestPosition(int[] a, int from) int maxPos = from; for (int j = from + 1; j < a.length; j++) if (a[j] > a[maxPos]) maxPos = j; return maxPos; public static void selectionSort(int[] a) for ____________________________________ int maxPos = largestPosition(a, i); ArrayUtil.swap(a, maxPos, i);
System.currentTimeMillis() - start
Which of the following statements is true?
The binary search algorithm is more efficient than the linear search, but it requires that the array be sorted.
Which of the following is a negative of binary search?
The data must be in sorted order.
The partial linear search method below is designed to search an array of String objects. Select the expression that would be needed to complete the method. public static int search(String[] a, String item) { for (int i = 0; i < a.length; i++) { if ( ____________________________ ) { return i; } return -1; } }
a [i]. equals (item)
The partial binary search method below is designed to search an array of String objects sorted in ascending order. Select the expression that would be needed to complete the method. public static int search(String[] a, int low, int high, String item) if (low <= high) int mid = (low + high) / 2; int result = ____________________________; if (result == 0) return mid; else if (result < 0) return search(a, mid + 1, high, item); else return search(a, low, mid - 1, item); return -1;
a [mid].compareTo(item)
The code segment below displays a table of numbers. Select an expression to complete the code segment, so that the resulting algorithm has O(n2) running time. for (int k = 1; k <=n; k++) { for _______________________ { System.out.print(j + ""); } System.out.println(); } a. (int j = 0; j < k; j++) b. (int j = 1; j < k; j = j * 2) c. (int j = 1; j <= 200; j++) d. (int j = n; j > 0; j = j / 2)
a. (int j = 0; j < k; j++)
Selection sort has O(n2) complexity. If a computer can sort 1,000 elements in 4 seconds, approximately how many seconds will it take the computer to sort 1,000 times that many, or 1,000,000 elements? a. 4,000,000 b. 1,000,000 c. 16 d. 1,000
a. 4,000,000
If you increase the size of a dataset fivefold, how much longer does it take to sort it with the selection sort algorithm? a. Approximately 25 times longer b. Approximately 20 times longer c. Approximately 100 times longer d. Approximately 5 times longer
a. Approximately 25 times longer
If a call to the Arrays static method binarySearch returns a value of -10, what can be concluded? I the element is not in the array II the element is at index 10 III the element can be inserted at index 9 a. I and III b. I c. II d. III
a. I and III
Which of the following classes implement the Comparable interface? I Date II Collections III String a. I and III b. I c. II and III d. I and II
a. I and III
Which of the following arrays can be used in a call to the Arrays.sort method? I Any array with primitive numeric data, such as int, double, ... II Arrays of String or numeric wrapper classes like, Integer, Double, ... III Any class that implements the Comparable interface a. I, II and III b. II c. I d. I and II
a. I, II and III
When does quicksort's worst-case run-time behavior occur? I when the data is randomly initialized in the array II when the data is in ascending order III when the data is in descending order a. II and III b. II c. I d. III
a. II and III
In big-Oh notation, suppose an algorithm requires an order of n3 element visits. How does doubling the number of elements affect the number of visits? a. It number of visits goes up by a factor of eight. b. It doubles the number of visits. c. It triples the number of visits. d. It quadruples the number of visits.
a. It number of visits goes up by a factor of eight.
The method findLargest examines the elements of an array arr which contains non-negative values public static int findLargest(int[] arr) { int curLargest = -1; for (int i = 0; i < arr.length; i++) { if (arr[i] >= curLargest) { curLargest = arr[i]; } } return curLargest; } What can you conclude about the running time of this section of code? a. Its running time will be O(n). b. Its running time will be O(n log (n)). c. Its running time will be O(n2). d. Its running time will be O(log (n)).
a. Its running time will be O(n).
Can you search the following array using binary search? int[] A = {6, 5, 4, 2, 0, 1, -1, -17}; a. No. Binary search can be applied to a sorted array only. b. Yes. Binary search can be applied to any array. c. Yes, but the algorithm runs slower because the array is in descending order. d. No, negative numbers are not allowed because they indicate that a value is not present.
a. No. Binary search can be applied to a sorted array only.
Which of the sorts in the textbook can be characterized by the fact that even in the worst case the running time will be O(n log(n)))? I quicksort II selection sort III merge sort a. I and III b. III c. II d. I
b. III
Merge sort is a(n) ____ algorithm. a. O(n) b. O(n log(n)) c. O(n2) d. O(log n)
b. O(n log(n))
Suppose a developer gets class XYZ files and documentation from a subcontractor. This class does not implement the Comparable interface. What must be true in order for the developer to sort an array of XYZ objects without modifying the xyz class? a. The developer must supply a comparator object belonging to a class that implements the Comparator<XYZ> interface. b. XYZ objects must be randomly distributed. c. The XYZ class must implement the Sortable interface. d. XYZ objects must be ordered.
a. The developer must supply a comparator object belonging to a class that implements the Comparator<XYZ> interface.
Assume we are using quicksort to sort an array in ascending order. What can we conclude about the indexes of two pivot elements placed in consecutive recursive calls? a. They are randomly located. b. They are both in the same half of the array. c. They are in different halves of the array. d. They are adjacent.
a. They are randomly located.
A binary search is generally ____ a linear search. a. faster than b. equal to c. less efficient than d. slower than
a. faster than
The merge sort algorithm presented in section 14.4, which sorts an array of integers in ascending order, uses the merge method which is partially shown below. Select the condition that would be needed to complete the method so that the elements are sorted in descending order. privatestatic void merge(int[]first, int[] second, int[] a) { int iFirst = 0; int iSecond = 0; int j = 0; while (iFirst < first.length && iSecond < second.length) { if (_____________________________) { a[j] = first[iFirst]; iFirst++; } else { a[j] = second[iSecond]; iSecond++; } j++; } // rest of the method follows here } a. first[iFirst] > second[iSecond] b. iFirst > iSecond c. first[iFirst] < second[iSecond] d. iFirst < iSecond
a. first[iFirst] > second[iSecond]
Complete the following code for an interface that classes who wish to compare Auto objects can implement. public interface Comparator<Auto> { _____________________ } a. int compare(Auto a, Auto b); b. single compareTo(Auto a, Auto b); c. single compare(Auto a, Auto b); d. boolean compare(Auto a, Auto b);
a. int compare(Auto a, Auto b);
If an element is present in an array of length n, how many element visits, on average, are necessary to find it using a linear search? a. n / 2 b. n c. 2n d. n^2
a. n / 2
Complete the following code that is intended to provide a comparator interface that will be used to create an object that implements the Comparator interface so that object can compare Auto objects. ___________________________ { int compare(Auto a, Auto b); } a. public interface Comparator<Auto> b. public class Comparator<Auto> c. public interface Auto<Comparator> d. public class Comparator<Auto> implements Comparator
a. public interface Comparator<Auto>
Which function has a faster growth rate: θ(n1/2) or θ(log(n))? a. θ(n^1/2) b. They can't be compared. c. θ(log(n)) d. They are the same.
a. θ(n^1/2)
How many times can an array with 4,096 elements be cut into two equal pieces? a. 10 b. 12 c. 8 d. 16
b. 12
Given an ordered array with 15 elements, how many elements must be visited in the worst case of binary search? a. 8 b. 4 c. 2 d. 3
b. 4
In the textbook, we found that the number of element visits for merge sort totaled n + 5nlog2^n. Let's consider sorting 1024 elements. How many visits are needed? a. 6,144 b. 52,224 c. 51,200 d. 1.024
b. 52,224
Which selection sort iteration guarantees the array is sorted for a 10-element array? a. 1st iteration b. 9th iteration c. 10th iteration d. impossible to tell
b. 9th iteration
Suppose you have a phone number and need to find the address that it corresponds to. If there are 2,000,000 entries, how many do you expect to search in a printed phone directory before finding the address you are looking for? a. Approximately 1,200,000 records. b. Approximately 1,000,000 records. c. Approximately 75,000 records. d. Approximately 50,000 records.
b. Approximately 1,000,000 records.
The analysis for the number of visits in a binary search begins with the equation, T(n) = T(n / 2) + 1. What does the number 1 represent in this equation? a. The fact that the number of elements is odd. b. One element visit before a recursive call on one half of the array. c. The total number of recursions required. d. The fact that we search either the left half or the right half, but not both.
b. One element visit before a recursive call on one half of the array.
In each iteration, selection sort places which element in the correct location? a. The largest element in the array. b. The smallest element not yet placed in prior iterations. c. The smallest in the array. d. A random element.
b. The smallest element not yet placed in prior iterations.
The partial binary search method below is designed to search an array of String objects sorted in ascending order. Select the expression that would be needed to complete the method. public static int search(String[]a, int low, int high, String item) { if(low <= high) { int mid = (low + high) / 2; int result = ____________________________; if (result == 0) { return mid; } else if (result < 0) { return search(a, mid + 1, high, item); } else { return search(a, low, mid - 1, item); } } return -1; } a. item.compareTo(a[mid]) b. a[mid].compareTo(item) c. item.equals(a[mid]) d. a[low].compareTo(item)
b. a[mid].compareTo(item)
In general, the expression ____ means that f grows no faster than g. a. f(n) = log g^2 b. f(n) = O(g(n)) c. f(n) = log g d. g(n) = O(f(n))
b. f(n) = O(g(n))
Which sort algorithm starts with an initial sequence of size 1, which is assumed to be sorted, and increases the size of the sorted sequence in the array in each iteration? a. quicksort b. insertion sort c. selection sort d. merge sort
b. insertion sort
Consider an array with n elements. If we visit each element n times, how many total visits will there be? a. 2n b. n^2 c. n d. n^n
b. n^2
A search technique where, in each step, you split the size of the search in half is called a____ search.
binary
The code segment below prints some of the elements in an array with size n. Select an expression to complete the code segment so that the resulting algorithm has O(log n) running time. for __________________________ { System.out.println(array[j]); } a. (int j = 0; j < array.length; j++) b. (int j = 0; j < array.length; j = j + 2) c. (int j = 1; j < array.length; j = j * 2) d. (int j = 0; j < array.length / 2; j++)
c. (int j = 1; j < array.length; j = j * 2)
Given the following code snippet for searching an array: int[] arr = {3, 8, 12, 14, 17}; int newVal = 15; int pos = Arrays.binarySearch(arr, newVal); What value will pos have when this code is executed? a. 5 b. -6 c. -5 d. 6
c. -5
How large does n need to be so 0.3n2 is greater than 2.5n - 3? a. 9 b. 5 c. 7 d. 3
c. 7
Which notation, big-Oh, theta, or omega describes the growth rate of a function? I big-Oh II theta III omega a. I b. I and II c. I, II, and III d. II and III
c. I, II, and III
An algorithm that tests whether the first array element is equal to any of the other array elements would be an ____ algorithm. a. O(1) b. O(log (n)) c. O(n) d. O(n log (n))
c. O(n)
If the array is already sorted, what is the performance of insertion sort? a. O(n log n) b. O(log n) c. O(n) d. O(n2)
c. O(n)
The code segment below is designed to add the elements in an array of integers. Select the expression needed to complete the code segment so that it calculates the running time elapsed. long start = System.currentTimeMillis(); int sum = 0; for (int k = 0; k < values.length; k++) { sum = sum + values[k]; } long runningTime = ____________________________; a. System.currentTimeMillis() b. runningTime + start - System.currentTimeMillis() c. System.currentTimeMillis() - start d. System.currentTimeMillis() + start
c. System.currentTimeMillis() - start
Consider the sort method shown below for selection sort: public static void sort(int[] a) { for (int i = 0; i < a.length - 1; i++) { int minPos = minimumPosition(i); swap(minPos, i); } } Suppose we modify the call to the swap method call to read swap(i, minPos). What would be the result? a. The sort would produce incorrect results. b. The sort would work, but sort backwards. c. The sort would produce correct results. d. An exception would occur.
c. The sort would produce correct results.
Suppose you wanted to test your sort on an array filled with different elements each time the code is run. What is an efficient technique for creating an array of 1,000 elements for each run? a. Make a file with many sets of values and loop through them, sorting each one. b. Run the program many times, entering different values for the array elements. c. Use the Random class to generate array elements, sorting each set in a loop. d. Create many different arrays with different elements in the program code and sort each array.
c. Use the Random class to generate array elements, sorting each set in a loop.
Consider the minimumPosition method from the SelectionSorter class. Complete the code to write a maximumPosition method that returns the index of the largest element in the range from index from to the end of the array. private static int minimumPosition(int[] a, int from) { int minPos = from; for (int i = from + 1; i < a.length; i++) { if (a[i] < a[minPos]) { minPos = i; } } return minPos; } private static int maximumPosition(int[] a, int from) { int maxPos = from; for (int i = from + 1; i < a.length; i++) { ________________ } return maxPos; } a. if(a[i] == a[maxPos]) { maxPos = i; } b. if(a[i] < a[maxPos]) { maxPos = i; } c. if(a[i] > a[maxPos]) { maxPos = i; } d. if(a[i] <= a[maxPos]) { maxPos = i; }
c. if(a[i] > a[maxPos]) { maxPos = i; }
A version of which sort algorithm is used in the sort method in the Java Arrays class? a. merge sort b. selection sort c. quicksort d. insertion sort
c. quicksort
Find the simplest order of growth of the following expression: n3 + log(n5). a. θ(log(n5)) b. θ(n3+ log(n)) c. θ(n3) d. θ(n+ log(n))
c. θ(n3)
The ____ class contains a sort method that can sort array lists. a. Arrays b. Linear c. Sorting d. Collections
d. Collections
Which of the sorts in the textbook are based on the strategy of divide and conquer? I quicksort II mergesort III insertion sort a. I b. II c. III d. I and II
d. I and II
If the Arrays static method binarySearch is called on an array of 10 elements and returns a value of 10, what can be concluded? I the element is not found II that value cannot be returned from method binarySearch III if added, the element would be the largest element in the array a. I b. I and III c. III d. II
d. II
Suppose objects a and b are from a user-defined class that implements the Comparable interface. What must be true about the return value of a.compareTo(b) for the compareTo method that this class implements? a. It must return a positive value if a comes before b, 0 if they are the same, and a negative value if a comes after b. b. It must return 1 if a comes before b, 0 if they are the same, and -1 if a comes after b. c. It must return -1 if a comes before b, 0 if they are the same, and 1 if a comes after b. d. It must return a negative value if a comes before b, 0 if they are the same, and a positive value if a comes after b.
d. It must return a negative value if a comes before b, 0 if they are the same, and a positive value if a comes after b.
A portion of your program includes the method shown in the code snippet below to examine the elements of an array arr: private int findElement(int[] arr, int newVal) { int pos = Arrays.binarySearch(arr, newVal); return pos; } What can you conclude about the running time of this section of code? a. Its running time will be O(n^2). b. Its running time will be O(n log (n)). c. Its running time will be O(n). d. Its running time will be O(log (n)).
d. Its running time will be O(log (n)).
In the worst case, a linear search locates a value in an array of length n in ____ steps. a. O(log n2) b. O(n2) c. O(log n) d. O(n)
d. O(n)
In Big-Oh notation, selection sort is a(n) ____ algorithm. a. O(log n2) b. O(1) c. log n d. O(n2)
d. O(n2)
After one iteration of selection sort working on an array of 10 elements, what must hold true? a. At least two elements are correctly placed. b. The array cannot be sorted. c. The largest element is correctly placed. d. One element must be correctly placed.
d. One element must be correctly placed.
Which of the following statements about running times of algorithms is correct? a. An algorithm that is O(n) means that the number of comparisons does not grow as the size of the array increases. b. When determining the running time, lower-order terms must be taken into consideration. c. An algorithm that is O(1) means that only one comparison takes place. d. When determining the running time, constants are not taken into consideration.
d. When determining the running time, constants are not taken into consideration.
Assume that bands is an ArrayList of String objects which contains a number of elements in ascending order. Select a statement to complete the code segment below, which invokes the Java library binarySearch method to search for the string "Beatles". If the list does not already contain the string, it should be inserted in an appropriate location so that the list remains sorted. int index = Collections.binarySearch(bands, "Beatles"); if (index< 0) { __________________________ } a. bands.add(-1 * index, "Beatles"); b. bands.add(index + 1, "Beatles"); c. bands.add(-1 * index + 1, "Beatles"); d. bands.add(-1 - index, "Beatles");
d. bands.add(-1 - index, "Beatles");
Suppose an algorithm requires a total of 3n3 + 2n2 - 3n + 4 visits. In big-Oh notation, the total number of visits is of what order? a. n^2 * n^2 b. n^6 c. n^2 d. n^3
d. n^3
A binary search is generally ____ a linear search.
faster than
The merge sort algorithm presented in section 14.4, which sorts an array of integers in ascending order, uses the merge method which is partially shown below. Select the condition that would be needed to complete the method so that the elements are sorted in descending order. private static void merge(int[] first, int[] second, int[] a) int iFirst = 0; int iSecond = 0; int j = 0; while (iFirst < first.length && iSecond < second.length) if (_____________________________) a[j] = first[iFirst]; iFirst++; else a[j] = second[iSecond]; iSecond++; j++; // rest of the method follows here
first [iFirst] > second [ iSecond]
______6) Consider the sort method for selection sort shown below: public static void sort (int[] a) for (int i = 0; i < a.length - 1; i++) int minPos = minimumPosition(i); swap(minPos, i); Suppose we modify the loop control to read int i = 1; i < a.length - 1; i++. What would be the
if (a [i] > a [maxPos] ) { maxPos = i;}
Which of the sorts in the textbook can be characterized by the fact that the best case will have a running time of θ(n) if the data is already sorted? I quicksort II selection sort III insertion sort
insertion sort
Which sort algorithm starts with an initial sequence of size 1, which is assumed to be sorted, and increases the size of the sorted sequence in the array in each iteration?
insertion sort
______14) Consider the following code snippet: public static void sort(int[] a) for (int i = 1; i < a.length; i++) int next = a[i]; int j = i; while (j > 0 && a[j - 1] > next) a[j] = a[j - 1]; j--; a[j] = next; What sort algorithm is used in this code?
insertion sort
The code segment below displays a pattern of asterisks. Select an expression to complete the code segment so that the resulting algorithm has O(n) running time. for (int k = 0; k < n; k++) for _______________________ System.out.print("*"); System.out.println();
int j = 1; j < = 10; j++
The worst case in linear search is that every element must be checked to determine whether the search key exists, which occurs if the search key ________.
is the last array element or is not present
In big-Oh notation, suppose an algorithm requires an order of n the number of elements affect the number of visits?
it number of visits goes up by a factor of eight
Assume we are using quicksort to sort an array in ascending order. Into which array location does quicksort's strategy place a pivot element after partitioning?
its final correct location
The following code is an example of a ___ search. public static int search(int[] a, int v) { for (int i = 0; i < a.length; i++) { if (a[i] == v) { return i; } } return -1; }
linear
Which sort algorithm starts by cutting the array in half and then recursively sorts each half?
merge sort
If an element is present in an array of length n, how many element visits, on average, are necessary to find it using a linear search?
n /2
After one iteration of selection sort working on an array of 10 elements, what must hold true?
one element must be corectly placed
Suppose we modify the loop condition to read i < a.length. What would be the result?
the sort would produce correct results
What type of algorithm places elements in order?
sorting
Different sorting algorithms on a particular array produce the same result; the choice of algorithm affects ________ of the program that implements the algorithm.
the run time and the memory use
In each iteration, selection sort places which element in the correct location?
the smallest element notyet placed in prior iterations