Bird
Raised Fist0
DSA Pythonprogramming~10 mins

Radix Sort Algorithm in DSA Python - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to get the maximum number in the list for Radix Sort.

DSA Python
max_num = max(arr) if arr else [1]
Drag options to blanks, or click blank then click option'
A-1
BNone
C0
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using None causes errors when comparing numbers.
Using -1 may cause incorrect sorting if numbers are positive.
2fill in blank
medium

Complete the code to extract the digit at the current place value.

DSA Python
digit = (num // [1]) % 10
Drag options to blanks, or click blank then click option'
A1
Bplace
C10
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using fixed numbers like 10 or 1 instead of the variable place.
Using 0 causes division errors.
3fill in blank
hard

Fix the error in the loop that updates the place value for Radix Sort.

DSA Python
place = [1] * 10
Drag options to blanks, or click blank then click option'
Anum
B10
Cmax_num
Dplace
Attempts:
3 left
💡 Hint
Common Mistakes
Using 10 alone resets place to 10 every time.
Using max_num or num causes incorrect place updates.
4fill in blank
hard

Fill both blanks to create the buckets and append numbers based on the current digit.

DSA Python
buckets = [[] for _ in [1]]

buckets[digit].[2](num)
Drag options to blanks, or click blank then click option'
Arange(10)
Blist(range(10))
Cappend
Dextend
Attempts:
3 left
💡 Hint
Common Mistakes
Using extend instead of append adds each digit as separate elements.
Using list(range(10)) works but is less common than range(10).
5fill in blank
hard

Fill all three blanks to rebuild the list from buckets after each digit sorting pass.

DSA Python
arr = [[1] for bucket in buckets for [2] in bucket]

[3]
Drag options to blanks, or click blank then click option'
Anum
Bitem
Cprint(arr)
Dprint(buckets)
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names inconsistently.
Printing buckets instead of arr does not show the sorted list.

Practice

(1/5)
1. What is the main idea behind the Radix Sort algorithm?
easy
A. Use a pivot to partition the list and sort partitions separately
B. Compare each element with every other element and swap if needed
C. Divide the list into halves and sort each half recursively
D. Sort numbers digit by digit starting from the least significant digit

Solution

  1. Step 1: Understand Radix Sort approach

    Radix Sort sorts numbers by processing individual digits starting from the least significant digit (rightmost).
  2. Step 2: Compare with other sorting methods

    Other options describe Bubble Sort, Merge Sort, and Quick Sort, which are different algorithms.
  3. Final Answer:

    Sort numbers digit by digit starting from the least significant digit -> Option D
  4. Quick Check:

    Radix Sort = Sort by digits from right to left [OK]
Hint: Radix Sort processes digits from right to left [OK]
Common Mistakes:
  • Confusing Radix Sort with comparison-based sorts
  • Thinking it sorts from most significant digit first
  • Assuming it uses pivot or recursion
2. Which of the following is the correct way to initialize a list of empty buckets for Radix Sort in Python?
easy
A. buckets = [[]] * 10
B. buckets = [[] for _ in range(10)]
C. buckets = [0] * 10
D. buckets = list(range(10))

Solution

  1. Step 1: Understand bucket initialization

    We need 10 separate empty lists (buckets) for digits 0-9, so list comprehension creates independent lists.
  2. Step 2: Analyze options

    buckets = [[]] * 10 creates 10 references to the same list, causing bugs. buckets = [0] * 10 creates integers, not lists. buckets = list(range(10)) creates a list of numbers, not buckets.
  3. Final Answer:

    buckets = [[] for _ in range(10)] -> Option B
  4. Quick Check:

    Independent empty lists = list comprehension [OK]
Hint: Use list comprehension for independent empty lists [OK]
Common Mistakes:
  • Using [[]] * 10 causes all buckets to reference the same list
  • Initializing buckets with zeros instead of lists
  • Confusing range with list of empty lists
3. What will be the output of the following Python code snippet implementing one pass of Radix Sort on the least significant digit?
arr = [170, 45, 75, 90, 802, 24, 2, 66]
buckets = [[] for _ in range(10)]
for num in arr:
    digit = num % 10
    buckets[digit].append(num)
result = []
for bucket in buckets:
    result.extend(bucket)
print(result)
medium
A. [170, 45, 75, 90, 802, 24, 2, 66]
B. [2, 802, 24, 45, 75, 66, 170, 90]
C. [170, 90, 802, 2, 24, 45, 75, 66]
D. [802, 2, 24, 45, 75, 66, 170, 90]

Solution

  1. Step 1: Group numbers by least significant digit

    Digits are: 170(0), 45(5), 75(5), 90(0), 802(2), 24(4), 2(2), 66(6). Buckets: 0:[170,90], 2:[802,2], 4:[24], 5:[45,75], 6:[66].
  2. Step 2: Concatenate buckets in order 0 to 9

    Result list is [170, 90] + [] + [802, 2] + [] + [24] + [45, 75] + [66] + [] + [] + [] = [170, 90, 802, 2, 24, 45, 75, 66].
  3. Final Answer:

    [170, 90, 802, 2, 24, 45, 75, 66] -> Option C
  4. Quick Check:

    Sorted by last digit = [170, 90, 802, 2, 24, 45, 75, 66] [OK]
Hint: Group by digit, then join buckets in digit order [OK]
Common Mistakes:
  • Mixing digit extraction (using // instead of %)
  • Not preserving order inside buckets
  • Concatenating buckets in wrong order
4. The following code attempts to perform Radix Sort but has a bug. What is the error?
def radix_sort(arr):
    max_num = max(arr)
    exp = 1
    while max_num // exp > 0:
        buckets = [[]] * 10
        for num in arr:
            index = (num // exp) % 10
            buckets[index].append(num)
        arr = []
        for bucket in buckets:
            arr.extend(bucket)
        exp *= 10
    return arr

print(radix_sort([170, 45, 75, 90, 802, 24, 2, 66]))
medium
A. Using buckets = [[]] * 10 causes all buckets to reference the same list
B. The loop condition should be while max_num % exp > 0
C. The digit extraction formula is incorrect
D. The function does not return the sorted array

Solution

  1. Step 1: Identify bucket initialization issue

    buckets = [[]] * 10 creates 10 references to the same list, so appending to one bucket appends to all.
  2. Step 2: Check other parts

    Loop condition and digit extraction are correct. The function returns arr properly.
  3. Final Answer:

    Using buckets = [[]] * 10 causes all buckets to reference the same list -> Option A
  4. Quick Check:

    Bucket initialization = [[] for _ in range(10)] [OK]
Hint: Avoid [[]]*10; use list comprehension for buckets [OK]
Common Mistakes:
  • Using [[]]*10 instead of list comprehension
  • Changing loop condition incorrectly
  • Misunderstanding digit extraction
5. You want to sort the list [329, 457, 657, 839, 436, 720, 355] using Radix Sort. After sorting by the least significant digit (units place), what will the list look like?
hard
A. [720, 355, 436, 457, 657, 329, 839]
B. [329, 720, 436, 457, 657, 839, 355]
C. [720, 329, 436, 839, 457, 657, 355]
D. [355, 720, 436, 329, 457, 657, 839]

Solution

  1. Step 1: Extract least significant digit of each number

    329(9), 457(7), 657(7), 839(9), 436(6), 720(0), 355(5).
  2. Step 2: Group numbers by last digit and concatenate in digit order 0-9

    Digits 0:[720], 5:[355], 6:[436], 7:[457, 657], 9:[329, 839]. Concatenate: [720, 355, 436, 457, 657, 329, 839].
  3. Final Answer:

    [720, 355, 436, 457, 657, 329, 839] -> Option A
  4. Quick Check:

    Sorted by units digit = [720, 355, 436, 457, 657, 329, 839] [OK]
Hint: Sort by last digit, keep order inside groups [OK]
Common Mistakes:
  • Mixing digit extraction with division instead of modulo
  • Not preserving order of numbers with same digit
  • Concatenating buckets in wrong digit 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