Insertion Sort — Theory & Code
1. What is Insertion Sort?
Insertion Sort builds a sorted array one element at a time. You pick the next element from the unsorted portion and insert it into its correct position within the sorted portion, shifting elements as needed.
2. Step-by-Step Illustration
Unsorted array: [5] [2] [4] [6] [1] [3] Iteration 1: Sorted: [5] Take next: 2 → insert before 5 Array becomes: [2] [5] [4] [6] [1] [3] Iteration 2: Sorted: [2] [5] Next: 4 → shift 5 to right, insert 4 → [2] [4] [5] [6] [1] [3] Continue until sorted.
Diagram (ASCII):
Initial: 5 | 2 4 6 1 3 Step 1: 2 5 | 4 6 1 3 Step 2: 2 4 5 | 6 1 3 Step 3: 2 4 5 6 | 1 3 ... Final: 1 2 3 4 5 6
3. Java Implementation
public class InsertionSort {
public static void insertionSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int key = arr[i];
int j = i - 1;
// Move elements greater than key to one position ahead
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
public static void main(String[] args) {
int[] arr = {5, 2, 4, 6, 1, 3};
insertionSort(arr);
System.out.println(Arrays.toString(arr)); // 1 2 3 4 5 6
}
}
4. Complexity Analysis
- Time Complexity:
- Worst-case: O(n²) — when array is reverse sorted.
- Average-case: O(n²)
- Best-case: O(n) — when array is already sorted (only comparisons, no shifts).
- Space Complexity: O(1) — in-place algorithm.
- Adaptive: Yes — adjusts to nearly sorted data for better performance.
- Stable: Yes — equal elements retain their relative order.
Quick Comparison Table
| Characteristic | Insertion Sort | Notes |
|---|---|---|
| Time Complexity | Best: O(n), Avg: O(n²), Worst: O(n²) | Fast when nearly sorted |
| Space Complexity | O(1) | In-place |
| Stability | Yes | Preserves equal element order |
| Adaptive? | Yes | Runs linear if sorted |
| Best Use Cases | Small or mostly sorted lists | Efficient for most interview examples |
5. Pros & Cons
- Pros:
- Simple to understand and implement.
- Efficient for small or mostly sorted datasets.
- Uses very little memory.
- Stable and adaptive.
- Cons:
- Poor performance on large, random datasets (O(n²)).
- Shifting can be costly for large arrays.
6. Real-World and Interview Applications
Insertion Sort shines in real-time systems where data arrives gradually and needs to be constantly sorted (e.g., card games, online insertion). Its stability also makes it ideal in hybrid algorithms like TimSort and for partially sorted data.
Conclusion
Insertion Sort may not be the fastest general-purpose sorting algorithm, but its simplicity, stability, adaptability, and low space usage make it invaluable in the right contexts. It is also a foundational algorithm that helps deepen understanding of sorting mechanics—especially useful in coding interviews and educational settings.
Comments
Post a Comment