Challenge - 5 Problems
Insertion Sort Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Output of Insertion Sort on a small array
What is the output of the following Go code that uses insertion sort on the array [4, 3, 2, 1]?
DSA Go
package main import "fmt" func insertionSort(arr []int) { for i := 1; i < len(arr); i++ { key := arr[i] j := i - 1 for j >= 0 && arr[j] > key { arr[j+1] = arr[j] j-- } arr[j+1] = key } } func main() { arr := []int{4, 3, 2, 1} insertionSort(arr) fmt.Println(arr) }
Attempts:
2 left
💡 Hint
Insertion sort moves smaller elements to the front step by step.
✗ Incorrect
Insertion sort sorts the array in ascending order by inserting each element into its correct position in the sorted part of the array.
❓ Predict Output
intermediate2:00remaining
Insertion Sort with duplicate elements
What will be the output after running insertion sort on the array [5, 3, 5, 2, 2]?
DSA Go
package main import "fmt" func insertionSort(arr []int) { for i := 1; i < len(arr); i++ { key := arr[i] j := i - 1 for j >= 0 && arr[j] > key { arr[j+1] = arr[j] j-- } arr[j+1] = key } } func main() { arr := []int{5, 3, 5, 2, 2} insertionSort(arr) fmt.Println(arr) }
Attempts:
2 left
💡 Hint
Duplicates should be placed next to each other in sorted order.
✗ Incorrect
Insertion sort keeps duplicates in order and sorts the array ascendingly.
🧠 Conceptual
advanced1:00remaining
Time complexity of insertion sort in worst case
What is the time complexity of insertion sort in the worst case scenario?
Attempts:
2 left
💡 Hint
Worst case happens when the array is sorted in reverse order.
✗ Incorrect
Insertion sort compares each element with all previous elements in worst case, leading to O(n^2) time.
🔧 Debug
advanced2:00remaining
Identify the bug in this insertion sort code
What error will this Go code produce when running insertion sort?
DSA Go
package main import "fmt" func insertionSort(arr []int) { for i := 1; i < len(arr); i++ { key := arr[i] j := i for j >= 0 && arr[j] > key { arr[j+1] = arr[j] j-- } arr[j+1] = key } } func main() { arr := []int{3, 1, 2} insertionSort(arr) fmt.Println(arr) }
Attempts:
2 left
💡 Hint
Check the initial value of j and array indexing inside the loop.
✗ Incorrect
j starts at i instead of i-1, causing arr[j] to access out of range when j == len(arr).
🚀 Application
expert3:00remaining
Number of shifts in insertion sort for a given array
How many times will elements be shifted (moved) during insertion sort on the array [8, 4, 3, 7, 6]?
Attempts:
2 left
💡 Hint
Count each time an element is moved to the right during sorting.
✗ Incorrect
Shifts happen when elements are moved to make space for the key. Counting carefully gives 6 shifts.