Bird
Raised Fist0
DSA C#programming~5 mins

Sorting Stability and When to Use Which Sort in DSA C# - 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. 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
Is Quick Sort stable or unstable? Why?
Quick Sort is generally unstable because it can change the order of equal elements during partitioning.
Click to reveal answer
intermediate
When should you use a stable sort over an unstable sort?
Use a stable sort when the order of equal elements matters, such as sorting by multiple criteria step-by-step or when preserving original order is important.
Click to reveal answer
beginner
Which sorting algorithm is best for small datasets and why?
Insertion Sort is best for small datasets because it is simple and efficient for nearly sorted or small lists, despite being slower on large data.
Click to reveal answer
Which of these sorting algorithms is stable by default?
AHeap Sort
BQuick Sort
CMerge Sort
DSelection Sort
Why might you choose an unstable sort over a stable one?
AWhen order of equal elements does not matter
BUnstable sorts are always faster
CStable sorts use more memory
DUnstable sorts are easier to implement
Which sorting algorithm is best for nearly sorted data?
AInsertion Sort
BBubble Sort
CMerge Sort
DHeap Sort
What is a key disadvantage of Quick Sort?
AIt is slow on small datasets
BIt uses too much memory
CIt cannot sort large datasets
DIt is unstable
Which sorting algorithm guarantees O(n log n) time in worst case?
AQuick Sort
BMerge Sort
CInsertion Sort
DSelection Sort
Explain what sorting stability means and give an example of when it is important.
Think about sorting a list of people by age, then by name.
You got /3 concepts.
    Describe when you would choose Insertion Sort over Merge Sort or Quick Sort.
    Consider sorting a short list or a list that is almost sorted.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does it mean when a sorting algorithm is called stable?
      easy
      A. It uses less memory than unstable sorts.
      B. It sorts elements in ascending order only.
      C. It keeps the original order of equal elements unchanged.
      D. It always sorts in place without extra space.

      Solution

      1. Step 1: Understand stability in sorting

        A stable sort means if two elements are equal, their order stays the same as before sorting.
      2. Step 2: Compare with other options

        Options B, C, and D describe other properties but not stability.
      3. Final Answer:

        It keeps the original order of equal elements unchanged. -> Option C
      4. Quick Check:

        Stable sort = keeps equal elements order [OK]
      Hint: Stable means equal items keep their order [OK]
      Common Mistakes:
      • Confusing stability with sorting order
      • Thinking stability means less memory use
      • Assuming all sorts are stable
      2. Which of the following is the correct C# syntax to call the built-in stable sort method on a list named numbers?
      easy
      A. Sort(numbers);
      B. numbers.Sort();
      C. numbers.StableSort();
      D. numbers.OrderBy(x => x);

      Solution

      1. Step 1: Identify the correct method for sorting a List in C#

        The List<T> class has a Sort() method that sorts the list in place and is stable.
      2. Step 2: Check other options

        Sort(numbers); is incorrect syntax as Sort is an instance method. numbers.OrderBy(x => x); returns an IEnumerable but does not sort the list in place. numbers.StableSort(); is not a valid method in C#.
      3. Final Answer:

        numbers.Sort(); -> Option B
      4. Quick Check:

        List.Sort() is correct stable sort call [OK]
      Hint: Use List.Sort() to sort in place stably [OK]
      Common Mistakes:
      • Using LINQ OrderBy without assignment
      • Assuming StableSort() exists
      • Calling Sort as a standalone function
      3. Consider the following C# code snippet:
      var items = new List<(int id, string name)> {
        (1, "apple"),
        (2, "banana"),
        (3, "apple"),
        (4, "banana")
      };
      items = items.OrderBy(item => item.name).ToList();
      foreach(var item in items) {
        Console.Write(item.id + " ");
      }
      What is the output?
      medium
      A. 1 3 2 4
      B. 3 1 2 4
      C. 2 4 1 3
      D. 4 2 3 1

      Solution

      1. Step 1: Understand sorting by name with stability

        The list is sorted by the 'name' field. Since OrderBy is stable, equal names keep their original order.
      2. Step 2: Trace the sorted order

        Names sorted alphabetically: "apple", "apple", "banana", "banana". Original order for "apple" is id 1 then 3; for "banana" is id 2 then 4.
      3. Final Answer:

        1 3 2 4 -> Option A
      4. Quick Check:

        Stable sort keeps equal names order: 1 3 2 4 [OK]
      Hint: Stable sort keeps original order of equal keys [OK]
      Common Mistakes:
      • Assuming unstable sort changes order of equal names
      • Mixing up id order after sorting
      • Ignoring stability property of OrderBy
      4. You wrote this code to sort a list of strings by length but it does not keep the original order of equal length strings:
      var words = new List<string> { "cat", "dog", "bat", "apple" };
      words.Sort((a, b) => a.Length.CompareTo(b.Length));
      
      What is the main reason the original order of equal length strings is not preserved?
      medium
      A. The Sort method is unstable for custom comparers.
      B. The comparison function is incorrect.
      C. The list contains duplicates.
      D. Strings cannot be sorted by length.

      Solution

      1. Step 1: Understand stability with custom comparers

        In C#, List.Sort with a custom comparer is not guaranteed to be stable, so equal keys may reorder.
      2. Step 2: Check other options

        The comparison function is correct, duplicates do not affect stability, and strings can be sorted by length.
      3. Final Answer:

        The Sort method is unstable for custom comparers. -> Option A
      4. Quick Check:

        Custom comparer Sort is unstable [OK]
      Hint: Custom comparer Sort may be unstable [OK]
      Common Mistakes:
      • Blaming comparison function for instability
      • Thinking duplicates cause instability
      • Assuming all Sort calls are stable
      5. You have a list of employee records with id and department. You want to sort employees by department alphabetically but keep the original order of employees within the same department. Which sorting approach is best?
      hard
      A. Use an unstable sort by department for faster sorting.
      B. Sort by department descending to keep order.
      C. Sort by id first, then sort by department using unstable sort.
      D. Use a stable sort by department to keep original order within groups.

      Solution

      1. Step 1: Identify requirement to keep original order within same department

        This means sorting must be stable so equal departments keep their original order.
      2. Step 2: Evaluate options

        Using an unstable sort by department loses original order within groups. Using a stable sort by department preserves it. Sorting by id first then by department with an unstable sort does not guarantee preservation. Sorting descending does not address stability.
      3. Final Answer:

        Use a stable sort by department to keep original order within groups. -> Option D
      4. Quick Check:

        Stable sort keeps order within equal keys [OK]
      Hint: Stable sort preserves order within equal keys [OK]
      Common Mistakes:
      • Using unstable sort and losing order
      • Sorting by id after department breaks order
      • Sorting descending does not preserve order
      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