본문 바로가기

자료구조

[자료구조] 배열

728x90

데이터를 빈틈없이 나열한 자료구조를 배열(순차리스트)이라고 한다.

배열은 일직성으로 쭈욱 나열된 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 계산된다.

 

 

 

배열의 한계

고정된 크기와 삽입/삭제의 번거로움 

통상적으로 배열은 고정적인 크기를 가지고 있기 때문에, 유동적인 활용이 어렵다.

대부분의 프로그래머는 배열의 삽입/삭제 등이 원활하기를 바란다. 때문에 배열보다는 연결리스트 형태의 

유연한 자료구조의 형태를 더욱 많이 사용하게 된다.

 

 

728x90