정적배열(Static Array)

Static Array는 크기가 고정된 연속적인 메모리 공간에 같은 데이터 타입의 요소들을 순차적으로 저장하는 자료구조이다.

특징

  • 고정된 크기: 배열을 처음 메모리에 할당을 할 때 크기를 미리 지정해야 한다.
  • 연속적인 메모리 할당: 물리적인 메모리 상에 데이터가 빈틈없이 나란히 저장된다.
  • 인덱스 기반 접근: 0부터 시작하는 인덱스를 통해 각 요소에 즉시 접근할 수 있다.

시간 복잡도

  • 접근 (Access): $O(1)$ 시작 메모리 주소 + (인덱스 * 데이터 타입 크기)라는 단순한 수식을 통해 원하는 데이터의 물리적 위치를 즉시 계산하여 한 번에 접근할 수 있다.
  • 검색 (Search): $O(n)$ 특정 값을 찾기 위해서는 배열의 인덱스 0번부터 끝까지 순차적으로 확인해야 한다.
  • 삽입 및 삭제(Insert/Delete): $O(n)$ 맨 끝에 데이터를 추가하는 것은 빠르지만, 배열의 맨 앞이나 중간에 데이터를 넣거나 빼려면 그 뒤에 있는 모든 요소들의 위치를 한 칸씩 밀거나 당겨야(Shift) 하므로 시스템 자원 소모가 크다.

정적배열의 주요 활용처

  • OS 및 시스템 프로그래밍: 하드웨어 자원을 엄격하게 관리해야 하는 커널이나 디바이스 드라이버에서 사용
  • 엣지 컴퓨팅 및 하드웨어 버퍼: 엣지디바이스환경같은 제한된 리소스를 가진 환경에서 센서 데이터를 읽어오거나 영상 프레임을 처리할 때 크기를 고정한 버퍼 용도로 메모리를 미리 할단해 둔다.
  • 고성능 연산 및 AI 텐서 구조: 다차원 행렬 계산을 수행할 때, 메모리 상에 데이터가 연속적으로 존재해야 CPU,GPU 캐시 히트율이 올라가 연산 속도가 극대화된다.

python에서 정적 배열 구현 방법

# 크기가 5인 정적 배열 모방
size = 5
static_arr = [None] * size 

# 인덱스를 통한 데이터 할당 및 접근 (시간 복잡도: O(1))
static_arr[0] = 10
static_arr[1] = 20

print(static_arr) # 출력: [10, 20, None, None, None]

Categories:

Updated:

Leave a comment