본문 바로가기

프로그래밍/기본기ㆍ자료구조

Array (배열)

728x90
반응형

배열 (일차원, 다차원)

크기가 고정적이며 인덱스(데이터의 순서)를 통하여 접근하고 메모리 관리가 쉽다.

메모리 주소가 연속성을 지니고 있어 검색할 때 빠르지만, 삽입/삭제가 느리고(사실상 불가능) 한 데이터가 삭제되더라도 연속성으로 인하여 메모리가 남는다.

가변 배열

다차원 배열과 비슷하지만 크기가 좀 더 가변적이다.

다차원 배열의 경우 크기를 할당할 때 [10, 20] 처럼 반드시 고정된 크기를 지정해야 한다. 그러나, 가변 배열의 경우 1차원 영역은 [10]처럼 고정된 크기를 지정해야 하되, 2차원 영역은 가변적으로 지정할 수 있다.

 

원형 배열

마지막 원소 다음에 다시 첫 번째 원소가 계속되는 배열

배열 삽입 시

크기 [10]의 배열이 있다고 가정하였을 때. new로 크기를 다시 할당하거나,

System.Array.Resize<>()로 조정해야 한다.

배열 삭제 시

크기 [10]의 배열이 있다고 가정하였을 때. 배열의 [9]번째를 삭제하더라도 배열의 크기는 [10]에서 줄어들지 않는다. [9]번째는 null 인 상태로 메모리를 차지한다.

따라서 삽입과 마찬가지로 새로 할당하고 기존 데이터를 복사해줘야한다.

 

사용 예 1) 싱글 배열

int[] array1 = new int[10];

위와 같이 선언 시 10개의 1차원 영역을 갖는 배열이 만들어진다.

사용 예 2) 다차원 배열

int[,] array2 = new int[10, 20];

위와 같이 선언 시 10개의 1차원 영역 안에 각 20개의 영역이 할당 된다.

사용 예 3) 가변 배열

int[][] jaggedArray = new int[10][];

for (int i = 0; i< jaggedArray.Length; ++i)

jaggedArray[i] = new int[i];

위와 같이 선언 시 10개의 1차원 영역 안에 각 i 만큼의 영역이 할당 된다.

 

다차원 배열은 1차원 배열(10)의 각 인덱스마다 동일한 크기(20)의 영역이 할당되지만

가변 배열은 1차원 배열(10)의 각 인덱스마다 서로 다른 크기( i )의 영역을 할당할 수 있다는 차이가 있다.

또한, 가변 배열은 생성 시 다차원 배열보다 속도가 느리지만 캐싱 후 사용할 경우 다차원 배열보다 빠른 속도를 보인다.

 

 

 

GlacialFriends 9월 14일 (월) 정식 출시!

안녕하세요? 이번에 부부가 힘을 합쳐 게임 하나를 출시하였습니다. 이제껏 핑계를 대면서 개발이 늦어졌는데 이번에 마음을 다잡고 완성시켜 처음으로 게임을 출시하게 되었습니다. 무료 게임

chipmunk-plump-plump.tistory.com

 

다람쥐와 포동포동이

 

반응형

'프로그래밍 > 기본기ㆍ자료구조' 카테고리의 다른 글

ArrayList (배열리스트)  (0) 2020.04.09
List (리스트)  (0) 2020.04.09
Override (오버라이드)  (0) 2020.04.08
파일구조  (0) 2020.04.06
자료구조  (0) 2020.04.06