📖 Scenario: You have a small list of numbers that you want to sort in ascending order. Sorting helps you organize data so you can find things faster, like arranging books by their height on a shelf.
🎯 Goal: Build a simple program that sorts a list of numbers using the insertion sort method. You will create the list, set up a helper variable, write the sorting logic, and then print the sorted list.
📋 What You'll Learn
Create a list called numbers with the exact values: [8, 3, 5, 4, 6]
Create a variable called i to use as the index in the sorting loop
Implement the insertion sort algorithm using a for loop with i from 1 to the length of numbers
Print the sorted numbers list after sorting
💡 Why This Matters
🌍 Real World
Sorting is used everywhere, like organizing contacts on your phone or arranging files by date.
💼 Career
Understanding sorting algorithms helps in software development, data analysis, and optimizing performance.
Progress0 / 4 steps
1
Create the list of numbers
Create a list called numbers with these exact values: [8, 3, 5, 4, 6]
DSA Python
Hint
Use square brackets [] to create a list and separate numbers with commas.
2
Set up the index variable for sorting
Create a variable called i and set it to 1 to start the sorting from the second element
DSA Python
Hint
The insertion sort starts from the second element, so i should start at 1.
3
Implement the insertion sort logic
Write a for loop with i from 1 to len(numbers) and inside it, use a while loop to move elements greater than key one position ahead. Use variables key for the current value and j for the index to compare.
DSA Python
Hint
Use a for loop to pick each element starting from index 1. Then use a while loop to shift larger elements to the right and insert the key in the correct position.
4
Print the sorted list
Write a print statement to display the sorted numbers list
DSA Python
Hint
Use print(numbers) to show the sorted list.
Practice
(1/5)
1. What is the main idea behind the Insertion Sort algorithm?
easy
A. Build the sorted list one element at a time by inserting elements in their correct position
B. Divide the list into halves and sort each half separately
C. Swap adjacent elements if they are in the wrong order repeatedly
D. Select the smallest element and swap it with the first unsorted element
Solution
Step 1: Understand insertion sort process
Insertion sort builds a sorted list by taking one element at a time and placing it in the correct position among the already sorted elements.
Step 2: Compare with other sorting methods
Options A, B, and D describe other sorting algorithms: bubble sort, merge sort, and selection sort respectively.
Final Answer:
Build the sorted list one element at a time by inserting elements in their correct position -> Option A
Quick Check:
Insertion sort = Insert elements in order [OK]
Hint: Insertion sort inserts elements one by one in order [OK]
Common Mistakes:
Confusing insertion sort with bubble sort
Thinking insertion sort divides the list
Mixing insertion sort with selection sort
2. Which of the following is the correct syntax to start the outer loop for insertion sort on a list arr of length n in Python?
easy
A. for i in range(0, n-1):
B. for i in range(n):
C. for i in range(1, n):
D. for i in range(n-1, 0, -1):
Solution
Step 1: Identify insertion sort loop start
The outer loop starts from index 1 because the first element (index 0) is considered sorted.
Step 2: Check options
for i in range(1, n): correctly uses range(1, n). Options B and C start from 0 which is incorrect. for i in range(n-1, 0, -1): loops backwards which is not standard for insertion sort.
Final Answer:
for i in range(1, n): -> Option C
Quick Check:
Start loop at 1 for insertion sort [OK]
Hint: Start outer loop from 1, not 0 [OK]
Common Mistakes:
Starting loop at 0 instead of 1
Using reverse loop incorrectly
Confusing loop ranges
3. What will be the output of the following code snippet?
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
arr = [4, 3, 2, 1]
insertion_sort(arr)
print(arr)
medium
A. [4, 3, 2, 1]
B. [1, 2, 3, 4]
C. [1, 3, 2, 4]
D. [2, 3, 4, 1]
Solution
Step 1: Trace the insertion sort on input
The list [4, 3, 2, 1] is sorted step-by-step by moving smaller elements leftwards until fully sorted.
Step 2: Final sorted list
After sorting, the list becomes [1, 2, 3, 4].
Final Answer:
[1, 2, 3, 4] -> Option B
Quick Check:
Sorted ascending = [1, 2, 3, 4] [OK]
Hint: Insertion sort outputs sorted ascending list [OK]
Common Mistakes:
Assuming original list remains unchanged
Confusing output with partial sorting
Misreading the while loop condition
4. Find the error in the following insertion sort code:
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i
while j > 0 and arr[j-1] > key:
arr[j] = arr[j-1]
j -= 1
arr[j] = key
arr = [3, 1, 2]
insertion_sort(arr)
print(arr)
medium
A. The for loop should start from 0, not 1
B. The while loop condition should be j >= 0, not j > 0
C. The assignment arr[j] = key should be outside the while loop
D. The variable j should start at i - 1, not i
Solution
Step 1: Check initialization of j
In insertion sort, j should start at i - 1 to compare the key with previous elements using the standard condition arr[j] > key.
Step 2: Verify other parts
The while loop condition and assignment are correct. The for loop correctly starts at 1.
Final Answer:
The variable j should start at i - 1, not i -> Option D
Quick Check:
j = i - 1 to compare previous elements [OK]
Hint: Start j at i-1 to compare with previous elements [OK]
Common Mistakes:
Using j = i instead of standard j = i-1
Changing while loop condition incorrectly
Misplacing key assignment inside loop
5. Given a list arr = [5, 3, 8, 6, 2], how many total shifts (element moves) will insertion sort perform to sort the list in ascending order?
hard
A. 6
B. 8
C. 7
D. 5
Solution
Step 1: Trace shifts during sorting
Insertion sort shifts elements to insert the key in the correct place: - i=1 (key=3): shift 5 right (1 shift) - i=2 (key=8): no shift (0 shifts) - i=3 (key=6): shift 8 right (1 shift) - i=4 (key=2): shift 8, 6, 5, 3 right (4 shifts)
Step 2: Calculate total shifts
Total shifts = 1 + 0 + 1 + 4 = 6 shifts. But note that each shift moves one element one position right. Counting carefully: At i=1: 1 shift At i=3: 1 shift At i=4: 4 shifts Total = 6 shifts
Step 3: Recount carefully
Actually, at i=4, elements 3,5,6,8 are shifted right one by one (4 shifts). Total shifts = 1 + 0 + 1 + 4 = 6.
Final Answer:
6 -> Option A
Quick Check:
Count shifts per insertion = 6 [OK]
Hint: Count shifts by tracing each insertion step [OK]
Common Mistakes:
Counting comparisons instead of shifts
Missing multiple shifts in one insertion
Confusing shifts with swaps
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.