What does it mean for a sorting algorithm to be stable?
A stable sorting algorithm keeps the original order of equal elements the same after sorting. For example, if two items have the same value, they stay in the order they appeared before sorting.
Click to reveal answer
beginner
Name a common stable sorting algorithm.
Merge Sort is a common stable sorting algorithm. It keeps equal elements in their original order while sorting.
Click to reveal answer
intermediate
Why might you choose an unstable sort like Quick Sort over a stable sort?
Quick Sort is often faster and uses less memory, so you might choose it when speed is more important than keeping equal elements in order.
Click to reveal answer
intermediate
Which sorting algorithm is best for nearly sorted data and why?
Insertion Sort is best for nearly sorted data because it only moves elements a little, making it very fast in this case.
Click to reveal answer
intermediate
What is the main advantage of Heap Sort?
Heap Sort has a guaranteed time of O(n log n) and uses only a small, fixed amount of extra memory, making it good when memory is limited.
Click to reveal answer
Which sorting algorithm is stable by default?
AMerge Sort
BQuick Sort
CHeap Sort
DSelection Sort
✗ Incorrect
Merge Sort is stable because it merges sorted lists without changing the order of equal elements.
When is Insertion Sort preferred?
AFor nearly sorted data
BFor large random data
CFor data with many duplicates
DFor data stored in a heap
✗ Incorrect
Insertion Sort is efficient for nearly sorted data because it only shifts elements slightly.
Which sorting algorithm uses a heap data structure?
AQuick Sort
BBubble Sort
CMerge Sort
DHeap Sort
✗ Incorrect
Heap Sort builds a heap to repeatedly extract the largest element.
Why might you avoid using Quick Sort in some cases?
AIt uses too much memory
BIt is always slow
CIt is unstable and worst case is slow
DIt only works on sorted data
✗ Incorrect
Quick Sort is unstable and can be slow in worst cases, like when data is already sorted.
Which sorting algorithm guarantees O(n log n) time in all cases?
AQuick Sort
BMerge Sort
CInsertion Sort
DBubble Sort
✗ Incorrect
Merge Sort always runs in O(n log n) time regardless of input.
Explain what sorting stability means and give an example of when it matters.
Think about sorting a list of people by age and then by name.
You got /3 concepts.
Describe when you would choose Merge Sort, Quick Sort, or Insertion Sort.
Consider stability, speed, and data condition.
You got /3 concepts.
Practice
(1/5)
1. Which sorting algorithm is stable by default, meaning it keeps the original order of equal elements?
easy
A. Heap Sort
B. Merge Sort
C. Quick Sort
D. Selection Sort
Solution
Step 1: Understand stability in sorting
A stable sort keeps the relative order of equal elements unchanged after sorting.
Step 2: Identify stable sorting algorithms
Merge Sort is stable because it merges sorted subarrays without changing order of equal elements. Heap Sort, Quick Sort, and Selection Sort are not stable by default.
Final Answer:
Merge Sort -> Option B
Quick Check:
Stable sort = Merge Sort [OK]
Hint: Stable sorts keep equal items in original order [OK]
Common Mistakes:
Thinking Quick Sort is stable
Confusing Heap Sort as stable
Assuming Selection Sort preserves order
2. Which of the following is the correct Java syntax to call a stable sorting method on an array named arr?
easy
A. Collections.stableSort(arr);
B. Collections.sort(arr);
C. Arrays.stableSort(arr);
D. Arrays.sort(arr);
Solution
Step 1: Identify Java sorting methods
Java's Arrays.sort() method sorts arrays and uses a stable sort for objects.
Step 2: Check method availability
There is no stableSort method in Java's standard libraries. Collections.sort() works on lists, not arrays.
Final Answer:
Arrays.sort(arr); -> Option D
Quick Check:
Correct syntax for array sort = Arrays.sort(arr); [OK]
Hint: Use Arrays.sort for arrays, Collections.sort for lists [OK]
Common Mistakes:
Using Collections.sort on arrays
Assuming stableSort method exists
Confusing array and list sorting methods
3. What is the output of the following Java code snippet?
class Item {
int value;
String name;
Item(int v, String n) { value = v; name = n; }
public String toString() { return name; }
}
Item[] arr = {
new Item(2, "apple"),
new Item(1, "banana"),
new Item(2, "cherry"),
new Item(1, "date")
};
Arrays.sort(arr, Comparator.comparingInt(i -> i.value));
for (Item i : arr) System.out.print(i + " ");
medium
A. banana date apple cherry
B. date banana cherry apple
C. apple cherry banana date
D. banana date cherry apple
Solution
Step 1: Understand sorting criteria and stability
The array is sorted by value using Arrays.sort with a comparator. Java's TimSort is stable, so equal values keep original order.
Step 2: Trace sorting and output
Items with value 1 are "banana" then "date" (original order). Items with value 2 are "apple" then "cherry". Sorted order: banana, date, apple, cherry.
Final Answer:
banana date apple cherry -> Option A
Quick Check:
Stable sort keeps equal values order: banana date apple cherry [OK]
Hint: Stable sort keeps original order for equal keys [OK]
Common Mistakes:
Assuming unstable sort changes order of equal values
Mixing up item names in output
Ignoring stability of Java's Arrays.sort with comparator
4. The following code tries to sort an array of integers but does not preserve the order of equal elements. What is the main issue?
int[] arr = {4, 2, 4, 3};
Arrays.sort(arr);
// Expected stable sort but order of equal 4s changed
medium
A. Arrays.sort on primitives is not stable
B. Comparator is missing for stability
C. Array contains duplicates causing error
D. Arrays.sort cannot sort integers
Solution
Step 1: Check sorting method on primitive arrays
Java's Arrays.sort on primitive types (like int[]) uses a dual-pivot quicksort which is not stable.
Step 2: Understand stability for primitives vs objects
For objects, Java uses TimSort which is stable. For primitives, stability is not guaranteed, so equal elements may reorder.
Final Answer:
Arrays.sort on primitives is not stable -> Option A
Quick Check:
Primitive sort = unstable Arrays.sort [OK]
Hint: Primitive array sort in Java is unstable [OK]
Common Mistakes:
Expecting stability on primitive arrays
Thinking missing comparator causes instability
Assuming duplicates cause errors
5. You have a list of employee records with fields id and salary. You want to sort by salary ascending but keep employees with the same salary in the order they were added. Which sorting approach is best?
hard
A. Use Heap Sort to guarantee order of equal salaries
B. Use Quick Sort for faster average performance ignoring stability
C. Use a stable sort like Merge Sort on the list by salary
D. Sort by id first, then by salary using unstable sort
Solution
Step 1: Understand requirement for stability
We want to keep original order of employees with same salary, so stability is required.
Step 2: Choose sorting algorithm with stability
Merge Sort is stable and sorts by salary while preserving order of equal salaries. Quick Sort and Heap Sort are not stable by default.
Final Answer:
Use a stable sort like Merge Sort on the list by salary -> Option C
Quick Check:
Stable sort needed for preserving order = Merge Sort [OK]
Hint: Stable sort keeps equal keys in original order [OK]
Common Mistakes:
Choosing unstable sorts ignoring order preservation
Sorting by id first without stable sort
Assuming Heap Sort is stable
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.