Sorting
The array-based implementation for Mergesort uses how many arrays?
2
The order of the input records has what impact on the number of comparisons required by Mergesort (as presented in this module)?
None
When implementing Insertion Sort, a binary search could be used to locate the position within the first i−1 records of the array into which record i should be inserted. Using binary search will:
Not speed up the asymptotic running time because shifting the records to make room for the insert will require Θ(i) time
After Quicksort completes the partition function, where is the pivot?
The last position in the partition
Which of these is a traditional measure for the cost of a sorting algorithm?
The number of comparisons and the number of swaps
The order of the input records has what impact on the number of comparisons required by Insertion Sort (as presented in this module)?
There is a big difference, the asymptotic running time can change
The order of the input records has what impact on the number of comparisons required by Quicksort (as presented in this module)?
There is a big difference, the asymptotic running time can change
When is Bubble Sort a good choice for sorting an array?
There is no situation where Bubble Sort is the best choice over all of the others in this chapter
You must merge 2 sorted lists of size m and n, respectively. The number of comparisons needed in the worst case by the merge algorithm will be:
m + n - 1
In the worst case, the total number of comparisons for Mergesort is closest to:
n log n
How many ways can n distinct values be arranged?
n!
The total number of pairs of records among n records is:
n(n−1)/2
In the worst case, the total number of comparisons for Bubble Sort is closest to:
n^2 / 2
In the worst case, the total number of comparisons for Insertion Sort is closest to:
n^2 / 2
If I is the number of inversions in an input array of n records, then Insertion Sort will run in what time?
Θ(n + I)
What is the average-case time for Mergesort to sort an array of n records?
Θ(n log n)
What is the best-case cost for Quicksort to sort an array of n elements?
Θ(n log n)
What is the running time of Mergesort when the input is an array where all record values are equal?
Θ(n log n)
What is the running time of Insertion Sort when the input is an array that has already been sorted?
Θ(n)
What is the running time of Insertion Sort when the input is an array where all record values are equal?
Θ(n)
What is the worst-case cost for Quicksort's partition step?
Θ(n)
(For the version of the algorithm as presented in this module:) What is the running time of Quicksort when the input is an array where all record values are equal?
Θ(n^2)
The average number of inversions in an array of n records is n(n-1)/4. This is:
Θ(n^2)
What is the best-case time for Bubble Sort (as the algorithm is presented in this module) to sort an array of n records?
Θ(n^2)
What is the running time for Bubble Sort when the input array has values that are in reverse sort order?
Θ(n^2)
What is the running time for Insertion Sort when the input array has values that are in reverse sort order?
Θ(n^2)
What is the running time of Bubble Sort (as the algorithm is presented in this module) when the input is an array that has already been sorted?
Θ(n^2)
What is the running time of Bubble Sort when the input is an array where all record values are equal?
Θ(n^2)
What is the worst-case cost for Quicksort to sort an array of n elements?
Θ(n^2)
What is the worst-case time for Insertion Sort to sort an array of n records?
Θ(n^2)
Which of these will NOT affect the RELATIVE running times for two sorting algorithms? The number of records
The CPU speed
When is Insertion Sort a good choice for sorting an array?
-The array contains only a few records. -The array has only a few records out of sorted order
We know that the worst case for Insertion Sort is about n^2/2 , while the average case is about n^2/4. This means that:
-The growth rates are the same -The runtime in the average case is about half that of the worst case (Both of the above)
Quicksort's worst-case case cost is O(n^2) and its average-case cost is O(n log n). This means that the fraction of input cases with cost O(n^2) must:
Drop as n grows
The order of the input records has what impact on the number of comparisons required by Bubble Sort (as presented in this module)?
None
Which of these is the best definition for a stable sorting algorithm?
An algorithm that does not change the relative ordering of records with identical keys
An exchange sort is:
Any sort where only adjacent records are swapped
In which cases are the time complexities the same for Quicksort?
Best and Average only
(True or False) Consider an array A of n records each with a unique key value, and Ar the same array in reverse order. There are a certain number of pairs, where an arbitrary position i and position j is a pair. Between these two arrays, exactly half of these pairs must be inverted.
False
(True or False) Quicksort (as the code is written in this module) is a stable sorting algorithm. Recall that a stable sorting algorithm maintains the relative order of records with equal keys.
False
If I is the number of inversions in an input array of n records, then {Insertion|Bubble} Sort will require how many swaps?
I
When selecting a pivot value, a simple thing to do is to always pick from the same place in the partition. If we use this approach, does it matter whether we always pick from the first position in the partition, the last position in the partition, or the middle position in the partition?
It is much better to pick the middle value
A disadvantage of Quicksort is:
Its worst-case running time is Θ(n^2)
What is the most complicated part of the Mergesort algorithm?
Merging the sorted halves back together
(True or False) Bubble Sort (as the code is written in this module) is a stable sorting algorithm. Recall that a stable sorting algorithm maintains the relative order of records with equal keys.
True
(True or False) Consider an array A of n records each with a unique key value, and Ar the same array in reverse order. Any given pair of records must be an inversion in exactly one of A or Ar .
True
(True or False) Insertion Sort (as the code is written in this module) is a stable sorting algorithm. Recall that a stable sorting algorithm maintains the relative order of records with equal keys.
True
(True or False) Mergesort is easier to implement when operating on a linked list than on an array.
True
When is Mergesort a good choice for sorting an array?
We need a reasonably fast algorithm with a good worst case cost
An inversion is:
When a record with key value greater than the current record's key appears before it in the array
Sometimes, the constant factors in an algorithm's runtime equation are more important thant its growth rate. When the problem is sorting, this can happen in which situation?
When we are sorting lots of small groups of records.
In which cases are the growth rates the same for Insertion Sort?
Worst and Average only
In which cases are the growth rates the same for Insertion sort?
Worst and Average only
In which cases are the time complexities the same for Bubble Sort (as the algorithm is presented in this module)?
Worst, Average and Best
In which cases are the time complexities the same for Mergesort?
Worst, Average and Best