Bird
Raised Fist0
DSA Javascriptprogramming~5 mins

Sorting Stability and When to Use Which Sort in DSA Javascript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
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.
Click to reveal answer
beginner
Name a common stable sorting algorithm.
Merge Sort is a common stable sorting algorithm.
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 it is chosen when speed and space are more important than keeping equal elements in order.
Click to reveal answer
beginner
Which sorting algorithm is best for nearly sorted data and why?
Insertion Sort is best for nearly sorted data because it runs very fast when the list is almost sorted.
Click to reveal answer
intermediate
What is a key factor in deciding which sorting algorithm to use?
Key factors include data size, whether stability is needed, memory limits, and if the data is nearly sorted or random.
Click to reveal answer
Which sorting algorithm is stable by default?
AQuick Sort
BMerge Sort
CHeap Sort
DSelection Sort
When is Insertion Sort a good choice?
AFor very large random data
BWhen memory is very limited
CFor nearly sorted data
DWhen stability is not important
Why might Quick Sort be preferred over Merge Sort?
AIt uses less memory and is often faster
BIt is stable
CIt works better on nearly sorted data
DIt is easier to implement
What does an unstable sort do with equal elements?
AKeeps their original order
BSorts only unique elements
CRemoves duplicates
DMay change their original order
Which factor is NOT important when choosing a sorting algorithm?
AColor of the data
BNeed for stability
CData size
DMemory availability
Explain what sorting stability means and give an example of when you would need a stable sort.
Think about keeping order of equal items.
You got /3 concepts.
    Describe how you would choose a sorting algorithm based on data size, stability needs, and data order.
    Match algorithm strengths to data conditions.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does it mean when a sorting algorithm is stable?
      easy
      A. It keeps the original order of equal elements after sorting
      B. It sorts elements faster than unstable algorithms
      C. It uses less memory than unstable algorithms
      D. It always sorts in ascending order

      Solution

      1. Step 1: Understand stability in sorting

        A stable sort keeps the relative order of items with equal keys unchanged.
      2. Step 2: Compare with other options

        Speed, memory use, or sorting order do not define stability.
      3. Final Answer:

        It keeps the original order of equal elements after sorting -> Option A
      4. Quick Check:

        Stable sort = keeps equal elements order [OK]
      Hint: Stable means equal items keep their original order [OK]
      Common Mistakes:
      • Confusing stability with speed
      • Thinking stability means sorting ascending only
      • Assuming stable sorts use less memory
      2. Which of the following is the correct way to call JavaScript's built-in sort method to sort numbers in ascending order?
      easy
      A. arr.sort()
      B. arr.sort((a, b) => a + b)
      C. arr.sort((a, b) => b - a)
      D. arr.sort((a, b) => a - b)

      Solution

      1. Step 1: Understand JavaScript's default sort

        By default, arr.sort() sorts elements as strings, not numbers.
      2. Step 2: Use compare function for numeric ascending

        The compare function (a, b) => a - b sorts numbers ascending correctly.
      3. Final Answer:

        arr.sort((a, b) => a - b) -> Option D
      4. Quick Check:

        Numeric ascending sort uses (a, b) => a - b [OK]
      Hint: Use (a, b) => a - b for ascending numeric sort [OK]
      Common Mistakes:
      • Using arr.sort() alone for numbers
      • Using (a, b) => b - a for ascending order
      • Using (a, b) => a + b which is invalid
      3. Consider the array of objects:
      const items = [
        {name: 'apple', price: 50},
        {name: 'banana', price: 20},
        {name: 'cherry', price: 50},
        {name: 'date', price: 20}
      ];
      items.sort((a, b) => a.price - b.price);

      What will be the order of items after sorting?
      medium
      A. [{banana,20}, {date,20}, {cherry,50}, {apple,50}]
      B. [{date,20}, {banana,20}, {cherry,50}, {apple,50}]
      C. [{banana,20}, {date,20}, {apple,50}, {cherry,50}]
      D. [{date,20}, {banana,20}, {apple,50}, {cherry,50}]

      Solution

      1. Step 1: Understand the sort comparator

        The comparator sorts by price ascending: 20 then 50.
      2. Step 2: Check stability of JavaScript sort

        JavaScript's sort is stable in modern engines, so equal price items keep original order.
      3. Step 3: Apply stability to equal price items

        For price 20, original order is banana then date; for 50, apple then cherry.
      4. Final Answer:

        [{banana,20}, {date,20}, {apple,50}, {cherry,50}] -> Option C
      5. Quick Check:

        Stable sort keeps equal price order [OK]
      Hint: Stable sort keeps original order of equal keys [OK]
      Common Mistakes:
      • Assuming unstable sort changes order of equal items
      • Mixing up banana and date order
      • Ignoring stability of JavaScript sort
      4. The following code tries to sort an array of strings by length, which may not keep the original order of equal length strings:
      const arr = ['bat', 'cat', 'apple', 'dog'];
      arr.sort((a, b) => a.length - b.length);

      What is the main reason the original order of equal length strings might not be preserved?
      medium
      A. Strings cannot be sorted by length
      B. JavaScript's sort is unstable in some engines
      C. The comparator function is incorrect
      D. The array contains duplicates

      Solution

      1. Step 1: Check comparator correctness

        The comparator (a, b) => a.length - b.length correctly compares string lengths.
      2. Step 2: Understand JavaScript sort stability

        JavaScript's sort is stable in modern engines but may be unstable in older engines, causing order change.
      3. Final Answer:

        JavaScript's sort is unstable in some engines -> Option B
      4. Quick Check:

        Unstable sort breaks equal element order [OK]
      Hint: Old JS engines have unstable sort, losing order [OK]
      Common Mistakes:
      • Blaming comparator function
      • Thinking strings can't be sorted by length
      • Assuming duplicates cause instability
      5. You have a list of student records with name and score. You want to sort by score ascending but keep the original order for students with the same score. Which sorting algorithm should you choose and why?
      hard
      A. MergeSort, because it is stable and sorts efficiently
      B. QuickSort, because it is fast but unstable
      C. HeapSort, because it uses less memory
      D. BubbleSort, because it is simple and stable

      Solution

      1. Step 1: Identify need for stability

        We want to keep original order for equal scores, so stability is required.
      2. Step 2: Choose algorithm with stability and efficiency

        MergeSort is stable and efficient (O(n log n)), suitable for this task.
      3. Step 3: Compare other options

        QuickSort is fast but unstable; HeapSort is unstable; BubbleSort is stable but inefficient.
      4. Final Answer:

        MergeSort, because it is stable and sorts efficiently -> Option A
      5. Quick Check:

        Stable + efficient = MergeSort [OK]
      Hint: Stable and efficient sort for equal keys: MergeSort [OK]
      Common Mistakes:
      • Choosing QuickSort ignoring instability
      • Picking BubbleSort despite inefficiency
      • Confusing HeapSort as stable
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard