Algorithm & 자료구조/자료구조
선형 자료구조 - 배열(Array)
불타는고굼이
2023. 10. 18. 13:59
반응형
배열의 기본 구조
- 배열 생성시, 크기가 고정된다.
- 배열의 인덱스는 0부터 시작된다.
- 위 예시는 int(정수) 배열을 나타낸다.
- 정수 배열은 4바이트 단위로 이루어ㅊ져 있어, 메모리 주소(memory address)의 시작 위치를 1000, 1004, ..., 1020로 나타낸다.
배열의 특징
- 연속된 메모리의 공간에 순차적으로 데이터를 저장하는 선형 자료구조이다.
- 많은 수의 데이터를 다룰 때 사용하는 자료구조
- 각 데이터를 인덱스와 1:1 대응
- 데이터가 메모리상에 연속적으로 저장
- 배열 생성시 크기를 미리 설정해야함
- 메모리는 배열이 선언될 때(컴파일 할 때) Stack영역에 할당한다.
배열의 장점
- 인덱스를 이용하여 데이터에 빠른 접근
- 시간 복잡도; O(1)
- 자료 구조의 크기가 클수록 더 강력한 장점
- 연속된 메모리 공간에 존재하기 때문에 관리 편리
배열의 단점
Search, Insertion, Deletion시의 시간복잡도
- 데이터의 추가(=삽입), 삭제가 번거로움
- 배열 중간 지점의 데이터 삭제시, 다음 항목의 모든 값을 앞으로 시프트 시켜야한다 (위 그림 참고).
- 이때 for문을 사용하므로 시간복잡도 O(n)을 가진다.
- 배열 생성시 크기를 예측 생성해야함
- 만약 딱 맞게 생성하게 되면 크기가 변함에 따라 새로운 배열을 할당해서 옮겨줘야하는 번거로움이 있음
- 예측 보다 크게 생성하면, 사용되지 않는 공간은 메모리의 낭비로 이어짐
- 따라서, 정적 자료(삽입, 삭제가 별로 없고 검색이 위주인)에 사용되는 경우 유리하다.
배열의 시간 복잡도
- Access: O(1)
- Search: O(n)
- Insertion: O(n)
- Deletion: O(n)
데이터 접근은 O(1)이며 random access라고 표현한다. 즉, 어느 위치에 있더라도 동일한 시간에 접근이 가능하다는 것을 의미한다. 나머지의 연산들은 worst와 average모두 O(n)으로 모든 요소들을 순회해야한다는 것을 의미한다.
배열을 사용하기 좋은 경우
- 데이터의 수가 확실하게 정해진 경우.
- 데이터의 삭제와 삽입이 적은 경우.
- 데이터의 탐색이 많이 이루어지는 경우.
References
선형 자료구조 - 배열(Array)
연속된 메모리의 공간에 순차적으로 데이터를 저장하는 선형 자료구조이다.연속된 메모리의 공간에 순차적으로 데이터를 저장하는 선형 자료구조이다.크기가 고정적이고 공간이 낭비되거나
velog.io
선형 자료구조 - 배열(Array)
배열(Array)는 물리적인 메모리상에 연속적으로 데이터를 그룹화(collection)한 선형 자료구조이다[1]. 같은 type의 데이터들을 함께 저장하는 방식이며, 첫 번째 데이터의 메모리상 위치의 인덱싱을
gukin.tistory.com
728x90
반응형