Insert an Element at a Given Position in an Array
Problem Statement
Given an array of n elements, insert a new element at a specified position.
- The array follows 0-based indexing
- Valid positions range from 0 to n
- All elements after the given position must be shifted one position to the right
Example 1
Input
arr = [1, 2, 3, 4, 5]
element = 10
position = 2
Output
[1, 2, 10, 3, 4, 5]
Explanation
- Element 10 is inserted at index 2
- Elements 3, 4, 5 shift one position to the right
Example 2
Input
arr = [7, 8, 9]
element = 5
position = 0
Output
[5, 7, 8, 9]
Explanation
- Insertion at index 0
- All elements move one position right
Why This Problem Is Important
- Tests array indexing and shifting
- Common in technical interviews
- Builds understanding of manual array manipulation
- Foundation for problems like:
- Insert in sorted array
- Array rotation
- Dynamic array operations
Approaches to Solve the Problem
- Manual Shifting (Core Logic – Interview Preferred)
- Using Built-in Functions (Language Optimized)
Approach 1: Manual Shifting (Core Logic)
Idea
- Start from the last element
- Shift elements one position to the right
- Insert the new element at the given position
Algorithm
- Traverse array from index n-1 to position
- Move each element to the right
- Place the new element at position
- Increase array size by 1
Time & Space Complexity
- Time Complexity: O(n)
- Space Complexity: O(1) (if extra space exists)
C Implementation
#include<stdio.h>
int main() {
int arr[100] = {1, 2, 3, 4, 5};
int n = 5;
int element = 10;
int position = 2;
for(int i = n; i > position; i--) {
arr[i] = arr[i - 1];
}
arr[position] = element;
n++;
printf("Array after insertion: ");
for(int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
C++ Implementation (Manual)
#include<iostream>
using namespace std;
int main() {
int arr[10] = {1, 2, 3, 4, 5};
int n = 5, element = 10, position = 2;
for(int i = n; i > position; i--)
arr[i] = arr[i - 1];
arr[position] = element;
n++;
cout << "Array after insertion: ";
for(int i = 0; i < n; i++)
cout << arr[i] << " ";
}
Java Implementation (Manual)
public class InsertElement {
public static void main(String[] args) {
int[] arr = new int[10];
arr[0]=1; arr[1]=2; arr[2]=3; arr[3]=4; arr[4]=5;
int n = 5, element = 10, position = 2;
for(int i = n; i > position; i--)
arr[i] = arr[i - 1];
arr[position] = element;
n++;
System.out.print("Array after insertion: ");
for(int i = 0; i < n; i++)
System.out.print(arr[i] + " ");
}
}

Approach 2: Using Built-in Methods
Best for real-world applications, but interviews prefer manual logic
Python Implementation
arr = [1, 2, 3, 4, 5]
element = 10
position = 2
arr.insert(position, element)
print("Array after insertion:", arr)
C++ (STL Vector)
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector arr = {1, 2, 3, 4, 5};
arr.insert(arr.begin() + 2, 10);
cout << "Array after insertion: ";
for(int x : arr) cout << x << " ";
}
C# Implementation
using System;
using System.Collections.Generic;
class Program {
static void Main() {
List arr = new List {1,2,3,4,5};
arr.Insert(2, 10);
Console.Write("Array after insertion: ");
foreach(int x in arr) Console.Write(x + " ");
}
}
JavaScript Implementation
let arr = [1, 2, 3, 4, 5];
arr.splice(2, 0, 10);
console.log("Array after insertion:", arr);
Dry Run (Manual Approach)
| Step | Array State | Explanation |
|---|---|---|
| Initial | [1,2,3,4,5] | Original array |
| Shift | [1,2,3,3,4,5] | Shift elements |
| Insert | [1,2,10,3,4,5] | Insert element |
Summary
- Insertion requires shifting elements
- Manual approach is important for interviews
- Built-in methods are useful for production code
Key Takeaways
- Time Complexity → O(n)
- Space Complexity → O(1) or O(n)
- Indexing accuracy is critical
