CS/DataStructure&Algorithm

선형구조 - 순차 리스트

용용띠용 2025. 4. 23. 19:01

Sequential List

: 데이터들을 논리적인 순서대로 메모리에 연속해 저장하는 구조이다.

 

종류

1. Array

2. ArrayList

 

 

Array

: 크기가 고정되어있는 고정 길이 배열 구조이다.

 

특징

- 고정된 크기를 가진다.

- 메모리 구조 단순하다.

- 인덱스를 통해 검색한다: O(1)

- 삽입, 삭제 시 추가작업 필요하다(원소 이동 비용 발생): O(n)     // 삽입, 삭제 연산 늘어날수록 연산 시간 증가

 

삽입

: 삽입할 자리를 만들고 삽입한다.

- 원소 옮기는 추가작업 필요

 

삭제

: 원소 삭제 후 삭제한 원소 뒤의 요소들을 앞으로 옮긴다.

- 원소 옮기는 추가작업 필요

 

검색

: 인덱스를 통해 원소를 탐색한다.

- 추가 작업이 불필요

 

ArrayList

: 크기를 자동으로 늘릴 수 있는 동적 배열 구조이다.

 

특징

- 인덱스를 통해 검색한다: O(1)

- 크기를 자동으로 조정할 수 있다(복사 비용 발생): O(n)

- 삭제 시 추가작업 필요하다(원소 이동 비용 발생): O(n)     // 삽입, 삭제 연산 늘어날수록 연산 시간 증가

- 중간 삽입 시 추가작업 필요하다(원소 이동 비용 발생): O(n) 

- 끝에 삽입 시 공간 여유가 있으면 O(1), 없으면 resize로 인해 복사 비용(O(n)) 발생한다.

 

더블링

:내부적으로 배열이 다 차게 되면 배열의 크기를 두 배로 늘리고 기존 데이터를 복사한다.

 

 

시간 복잡도 비교

// n = 데이터 개수

  Array ArrayList
검색 O(1) O(1)
중간 삽입 O(n) O(n)
끝 삽입   O(1)
// 더블링 발생 시: O(n)
삭제 O(n) O(n)
복사 O(n) O(n)