Static Array
Array is a contiguous block of data (memory is allocated to a process or file needing it).
What is static array?
Static Array = Fixed size array + type
Once you declared, the size of the array and type cannot be changed. If the array is full, then you cannot add additional elements into it.
âšī¸
Runs in constant time O(1), single operation. This means that regardless of the size of the array, the time taken to access the element will be unaffected.
Operation | Big-O Time | Notes |
---|---|---|
Access | O(1) | - |
Insert/Remove End | O(1) | - |
Insert/Remove Middle | O(n) | You have to shift the values |
Array can be initialized in two ways;
- with initial values
- without initial values, normally the languages will by default set the array elements to 0.
class StaticArray:
def __init__(self, *, array: list = [], capacity: int) -> None:
self.array = array if array else [0] * capacity
self.capacity = capacity
def append(self, value) -> None:
if len(self.array) < self.capacity:
self.array[len(self.array)] = value
def insert(self, value, index: int) -> None:
# range(start, stop, step)
# loop from backward, 3, 2, 1
# [1, 2, 3] = [1, 4, 2, 3]
# index = 1
# loop: 2 1, 0 won't go as it stop at 0
for i in range(len(self.array) - 1, index - 1, -1):
self.array[i + 1] = self.array[i]
self.array[index] = value
def remove(self, index: int) -> None:
if index == len(self.array) - 1:
self.array[len(self.array) -1] = 0
else:
for i in range(index, len(self.array) - 1):
self.array[i] = self.array[i + 1]
self.array[i + 1] = 0
def traverse(self) -> None:
for i in range(len(self.array)):
print(self.array[i])