In the previous article, we explored how insertion sort works through visual examples and step-by-step explanations. Now, let’s dive deeper into the algorithmic details by examining the pseudocode for a basic insertion sort algorithm. By the end of this article, you’ll have a clear understanding of how to implement insertion sort in any programming language.
Prerequisites:
Understanding the Key Concepts
Before we look at the pseudocode, let’s understand the key concepts used in insertion sort:
- Current Element (key): - The element we’re currently trying to insert into its correct position
- Selected from the unsorted portion of the array
- Also called the “key” element
 
- Sorted Portion: - The left part of the array that’s already sorted
- Initially contains just the first element
- Grows from left to right as the algorithm progresses
 
- Comparison Index (j): - Used to scan through the sorted portion
- Helps find the correct position for the current element to be inserted
- Moves from right to left in the sorted portion
 
Algorithm for Iterative Insertion Sort
- Start with First Element: - Consider the first element as a sorted portion of length 1
- The rest of the array is the unsorted portion
 
- Select Next Element: - Take the first element from the unsorted portion
- This becomes our current element (key)
 
- Find Correct Position: - Compare key with each element in the sorted portion
- Move elements greater than key one position ahead
- Continue until you find the correct position
 
- Insert Element: - Place the key in its correct position
- The sorted portion now grows by one element
 
- Repeat: - Continue steps 2-4 until the entire array is sorted
 
Pseudocode for Iterative Insertion Sort
Here’s the pseudocode for the iterative approach:
def insertionSort(arr):
  n = len(arr)
  
  # Start from the second element (index 1)
  for i in range(1, n):
    # Store the current element as key
    key = arr[i]
    
    # Initialize the position for comparison to the element before current
    j = i - 1
    
    # Move elements of arr[0..i-1], that are greater than key, to one position ahead
    # of their current position
    while j >= 0 and arr[j] > key:
      arr[j + 1] = arr[j]  # Shift elements to the right
      j -= 1              # Move to the next element to the left
    
    # Insert the key (current element) into its correct position
    arr[j + 1] = key
Example Walkthrough
Let’s trace the iterative pseudocode with the array [5, 2, 8, 1, 9]. The vertical bar (|) separates the sorted portion (left) from the unsorted portion (right):
- First Iteration ( - i = 1):- Initial array: [5 | 2, 8, 1, 9](5 is our sorted portion)
- We pick key = 2(first element from unsorted portion),i = 1,key = 2,j = 0
- Compare 2 with 5: Since 5 > 2, we shift 5 one position right
- arr[1] = 5,- j = -1
- Place 2 in the empty spot
- arr[0] = 2
- Result: [2, 5 | 8, 1, 9](now first two elements are sorted)
 
- Initial array: 
- Second Iteration ( - i = 2):- Current array: [2, 5 | 8, 1, 9]
- We pick key = 8,i = 2,key = 8,j = 1
- Compare 8 with 5: Since 5 < 8, 8 is already in correct position
- Result: [2, 5, 8 | 1, 9](first three elements are sorted)
 
- Current array: 
- Third Iteration ( - i = 3):- Current array: [2, 5, 8 | 1, 9]
- We pick key = 1,i = 3,key = 1,j = 2
- Compare and shift: 8 > 1, so 8 moves right (arr[3] = 8),j = 1
- Then 5 > 1, so 5 moves right (arr[2] = 5),j = 0
- Then 2 > 1, so 2 moves right (arr[1] = 2),j = -1
- Place 1 in the empty spot at beginning
- arr[0] = 1
- Result: [1, 2, 5, 8 | 9](first four elements are sorted)
 
- Current array: 
- Fourth Iteration ( - i = 4):- Current array: [1, 2, 5, 8 | 9]
- We pick key = 9,i = 4,key = 9,j = 3
- Compare 9 with 8: Since 8 < 9, 9 is already in correct position
- Result: [1, 2, 5, 8, 9 |](entire array is now sorted!)
 
- Current array: 
What’s Next?
Now that you understand the pseudocode, you might want to:
- Study the implementations in different programming languages
- Learn about common mistakes and how to avoid them
- Explore the time and space complexity analysis
- Understand the Advantages and Disadvantages of Insertion Sort Algorithm