[CS - 자료구조] 순차 리스트(배열)

리선맨·2023년 11월 1일

자료구조

목록 보기
2/7

#. 배열


##1. 배열이란?

배열은 같은 타입의 데이터를 연속적으로 저장할 수 있는 선형 자료구조이다.
저장된 데이터는 인덱스(index)원소값(elemtent)의 쌍으로 구성되고, 인덱스(index)를 통해 각 데이터에 접근 할 수 있다. 인덱스는 배열의 시작부터 몇 번째 위치에 데이터가 있는지를 나타내고, 배열의 크기는 생성시에 정해지며, 이후에는 변경할 수 없다.


##2. 배열의 장점과 단점

###2.1 장점

  • 인덱스를 통한 데이터 접근이 가능해 요소에 빠르게 접근할 수 있다.
  • 간단하게 구현하고 사용하기 쉽다.

###2.2 단점

  • 한 번 크기를 정하면 변경할 수 없다. 이로 인해 데이터의 추가, 삭제가 어렵고 배열의 크기를 변경하려면 새로운 배열을 생성하고 데이터를 복사해야 한다.
  • 배열의 크기를 미리 크게 잡아놓고 일부만 사용하는 경우, 사용하지 않는 메모리 공간이 낭비될 수 있다.

##3. 배열의 시간복잡도

배열 내 연산은 크게 4가지로 나뉜다.

###3.1 접근

배열의 특정 인덱스에 접근하는 경우, 배열은 인덱스를 통해 데이터에 직접 접근할 수 있기 때문에 O(1)의 시간 복잡도를 가진다.

###3.2 검색

배열에서 특정 데이터를 찾는 경우, 배열은 순차검색이기 때문에 최악의 경우 배열의 모든 요소를 확인해야 하므로 O(n)의 시간 복잡도를 가진다.

###3.3 추가

배열의 끝에 데이터를 추가하는 경우, 일반적으로 O(1)의 시간 복잡도를 가진다.
하지만 배열이 가득 차 있어 크기를 변경해야 하는 경우, 새 배열을 생성하고 기존 데이터를 복사해야 하므로 이 경우에는 O(n)의 시간 복잡도를 가진다.

###3.4 삭제

배열의 끝에서 데이터를 삭제하는 경우, O(1)의 시간 복잡도를 가진다.
그러나 중간에 있는 데이터를 삭제하는 경우, 삭제한 위치 이후의 데이터를 앞으로 이동시켜야 하므로 이 경우에는 O(n)의 시간 복잡도를 가진다.


##4. 배열의 사용

###4.1 직접적인 인덱스 접근

배열의 각 요소에 고유한 인덱스로 특정 위치의 데이터에 빠르게 접근 할 수 있다. 이는 특정 위치의 데이터를 읽거나 수정할 때 유용하다.

###4.2 메모리 효율성

메모리 공간을 연속적으로 사용하므로, 메모리 관리가 간단하고 효율적이다. 이로 인해 메모리 낭비를 최소화할 수 있다.

###4.3 데이터 관리 용이

동일한 타입의 여러 데이터를 하나의 이름으로 그룹화하여 관리할 수 있기 때문에, 데이터 관리가 용이하다. 이는 반복적인 작업을 수행할 때 특히 유용하다.

###4.4 다차원 데이터 처리

2차원, 3차원 등 다차원 배열을 사용하면 복잡한 데이터 구조를 효과적으로 표현하고 처리할 수 있다.

profile
프론트엔드 개발 공부중인 주니어 개발자의 복습노트

0개의 댓글