본문 바로가기

Data Structure

[자료구조] 배열

728x90

배열이란?

  • 선형 자료 구조
  • 동일한 데이터 타입을 연속적으로 저장한 자료 구조 
    • 그러므로 다른 데이터 타입을 담을 수 없다.

데이터를 순서대로 나열한다는 것과 메모리에 연속으로 저장한다는 점이 배열의 포인트이다. 

 

배열의 구성

  • index : 배열의 순서 (0부터 시작)
  • value : 배열의 값 
  • element : index와 value를 통칭하는 요소

 

배열의 시간 복잡도

✅ 특정 인덱스를 알고 있는 경우 O(1)의 시간 복잡도를 가진다.

배열의 원소 추가/삭제를 무조건 O(n)의 복잡도를 가진다고 생각할 수 있지만, 인덱스를 이용해서 접근하는 경우 O(1)의 복잡도를 가진다.

  • 특정 Index에 있는 원소를 참조하는 연산
  • 특정 Index의 원소의 값을 변경하는 연산
  • 배열의 가장 끝에 원소를 추가하는 연산
  • 배열의 가장 끝의 원소를 삭제하는 연산

 

✅ 특정 인덱스를 모를 때, 추가/삭제를 한다면 O(n)의 시간 복잡도를 가진다. 

임의의 위치에 원소를 추가/삭제하는 연산은 O(n)의 시간 복잡도를 가진다.

왜냐하면 배열의 경우 연속적으로 값이 배치되어야 하기 때문이다.

 

삽입 연산이라면 삽입되는 index 이후의 요소들을 모두 뒤로 한 칸씩 밀어야 하고, 반대로 삭제 연산은 삭제한 index 이후의 요소들을 모두 앞으로 한 칸씩 당겨야 한다.
이 연산들은 최악의 경우 총 n번이 반복될 수 있기 때문에 O(n)의 시간복잡도를 가진다.

'Data Structure' 카테고리의 다른 글

[자료구조] 그래프  (0) 2022.09.28
[자료구조] Queue  (0) 2022.09.27
[자료구조] Stack  (0) 2022.09.26
[자료구조] 연결 리스트 (양방향)  (0) 2022.09.26
[자료구조] 연결 리스트 (단방향)  (0) 2022.09.26