Web Development/자료구조
[자료구조] 배열 (Array)
devflate
2024. 4. 21. 10:56
- 무엇인가
- 일반 명사 : 일정한 차례나 간격에 따라 벌여 놓음 / 동일한 성격의 데이터를 관리하기 쉽도록 하나로 묶는 일
- 고유 명사 : 동일한 특성을 가지며, 일정한 규칙에 따라여러 요소가 나열되어 있는 데이터들의 집합
- 왜 사용하는가?
여러 값들을 각각 하나의 변수에 할당해서 사용하는 것은 코드의 가독성과 관리가 어렵다.
배열을 사용한다면, 동일한 데이터 타입의 여러 값을 하나의 변수로 관리할 수 있어 코드의 가독성과 관리가 편리해진다. - 어떻게 사용하는가?
- 인덱스와 값의 쌍으로 이루어진 연속적인 메모리의 집합이다.
- 배열은 값에 접근할 때, O(1)의 시간 복잡도를 갖는다.
(배열이 인덱스를 참조하여 값에 접근할 때는, 배열의 첫 번째 원소를 기준으로 요청된 인덱스만큼 원소를 건너 뛰어서 그 값에 접근한다.)
- 메모리 상의 배열과 주소 계산
배열이 선언되면, 배열의 크기만큼 메모리에 연속적인 공간을 할당한다.
할당된 공간에는 각 인덱스에 대응하는 값이 들어간다.
배열의 시작 주소와 인덱스(i)를 알 수 있다면,
시작 주소 + (데이터형의 크기) * 인덱스 를 통해서, 배열[i]의 주소를 알 수 있다. - 자바스크립트의 배열
자바스크립트에서는 배열을 불연속적으로 할당한다. 불연속적으로 할당한 메모리를 내부적으로 연결해서, 배열인 것처럼 보이게 한다. - 배열의 장단점
- 장점
- 읽기, 쓰기와 같은 참조 시 O(1)의 성능을 가진다. - 단점
- 크기 예측이 힘들기 때문에 메모리 낭비가 발생할 수 있다.
- 데이터의 삽입, 삭제가 비효율적이다.
(배열의 크기 변경을 위해서는, 추가적인 연속적인 공간 확보 및 기존 데이터의 복사가 필요하다.)
- 장점
- 참조
- https://codedragon.tistory.com/7468
- https://hong-study.tistory.com/16
- https://terms.naver.com/entry.naver?docId=3611968&cid=58598&categoryId=59316
- https://limecoding.tistory.com/78