class ArrayInsertion:
def __init__(self, arr):
self.arr = arr
self.size = len(arr)
def insert_at_middle(self, index, value):
# Shift elements right from the end to index
self.arr.append(0) # Increase size by one
for i in range(self.size, index, -1):
self.arr[i] = self.arr[i - 1] # Shift right
self.arr[index] = value # Insert new value
self.size += 1
def __str__(self):
return ' -> '.join(str(x) for x in self.arr) + ' -> null'
# Driver code
array = [1, 2, 3, 4, 5]
obj = ArrayInsertion(array)
obj.insert_at_middle(2, 99)
print(obj)self.arr.append(0) # Increase size by one
Expand array size by adding a placeholder at the end
for i in range(self.size, index, -1):
Loop backward from last element to index to shift elements right
self.arr[i] = self.arr[i - 1] # Shift right
Move element one position right to free space
self.arr[index] = value # Insert new value
Place the new value at the target index
Update size to reflect new element
1 -> 2 -> 99 -> 3 -> 4 -> 5 -> null