데이터를 빈틈없이 나열한 자료구조를 배열(순차리스트)이라고 한다.
배열은 일직성으로 쭈욱 나열된 1차원 배열,
1차원 배열의 각 데이터(요소)에 1차원 배열을 하나 더 붙인 모양의 2차원 배열
입체적인 사각면체로 가로, 세로, 높이에 빈틈없이 데이터를 나열한 3차원 배열 등이 있다.
출처 : https://programfrall.tistory.com/52
데이터를 물리적 주소에 순차적으로 저장하고 인덱스를 갖고 있기 때문에 배열내 각 요소에 바로 접근이 가능하다. 그러므로 데이터 접근이 매우 빠르다는 장점이 있다.
배열은 언어마다 조금씩 메모리에 저장되는 방식이 다르다고는 하지만, 일반적으로 아래와 같은 그림으로 표현한다.
배열의 첫요소 a[0] 의 주소를 알고 있다면 그 뒤로 붙는 연속된 요소들을 알 수 있다.
그러나, 배열은 크기가 고정되어 있어서 고정된 크기를 벗어나 더 많은 데이터를 삽입하려는 경우 늘리는 연산이 필요하고 데이터 삽입, 삭제시 해당 데이터의 뒤로 나열된 데이터들을 앞,뒤로 밀거나 당기는 연산을 해야만 한다. 이 때문에 삽입/삭제와 같은 접근에는 비효율적인 자료구조이다.
배열의 크기
배열의 크기는 담고있는 자료형과 배열의 전체 요소갯수(전체크기)를 통해 계산된다.
arr:[5] = {1,2,3,4,5}
위 처럼 Int형 배열이 있다고 한다면 Int자료형의 크기는 4Byte이기 때문에인 arr의 크기는
4Byte * 5(arr.count) = 총 20 Byte 로 계산된다.
배열의 한계
고정된 크기와 삽입/삭제의 번거로움
통상적으로 배열은 고정적인 크기를 가지고 있기 때문에, 유동적인 활용이 어렵다.
대부분의 프로그래머는 배열의 삽입/삭제 등이 원활하기를 바란다. 때문에 배열보다는 연결리스트 형태의
유연한 자료구조의 형태를 더욱 많이 사용하게 된다.
'자료구조' 카테고리의 다른 글
[자료구조] 큐-1 (0) | 2021.07.18 |
---|---|
[자료구조] 연결리스트-3 (양방향 연결 리스트) (0) | 2021.07.14 |
[자료구조] 연결리스트-2 (추가/삭제) (0) | 2021.07.12 |
[자료구조] 연결 리스트-1 (0) | 2021.07.12 |
자료 구조란? (0) | 2021.07.04 |