배열 (일차원, 다차원)
크기가 고정적이며 인덱스(데이터의 순서)를 통하여 접근하고 메모리 관리가 쉽다.
메모리 주소가 연속성을 지니고 있어 검색할 때 빠르지만, 삽입/삭제가 느리고(사실상 불가능) 한 데이터가 삭제되더라도 연속성으로 인하여 메모리가 남는다.
가변 배열
다차원 배열과 비슷하지만 크기가 좀 더 가변적이다.
다차원 배열의 경우 크기를 할당할 때 [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 )의 영역을 할당할 수 있다는 차이가 있다.
또한, 가변 배열은 생성 시 다차원 배열보다 속도가 느리지만 캐싱 후 사용할 경우 다차원 배열보다 빠른 속도를 보인다.
'프로그래밍 > 기본기ㆍ자료구조' 카테고리의 다른 글
ArrayList (배열리스트) (0) | 2020.04.09 |
---|---|
List (리스트) (0) | 2020.04.09 |
Override (오버라이드) (0) | 2020.04.08 |
파일구조 (0) | 2020.04.06 |
자료구조 (0) | 2020.04.06 |