연속적 동형 데이터 타입(Homogeneous Data Types)
- C/C++ 에서는 연속적인 메모리 공간에 대한 주소이며
- C# : 배열 객체로서 메모리 상의 배열에 대한 정보를 가지며 System.Array 클래스로 생성되어 속성과 메서드를 사용할 수 있는 객체 인스턴스
- 가변 배열(Jagged Array) : 배열 요소가 서로 다른 차원과 크기를 갖는 배열.
- 가변 배열 : int [][] a = ne wint [][];
- 2차원 배열 : int[ , ] a = new int[ , ];
- 특
- 일반 다차원 배열에서 공간의 낭비가 심할 때
- 각 차원마다 다른 배열 크기를 가져야 할 때
- 동적 배열(Dynamic Array) : 최대 크기를 미리 알 수 없을 때, 중간에 확장 또는 축소하는 기능을 갖는 배열
- 장점 : 꼭 필요한 공간만 사용
- 단점
- 매번 새로운 배열 공간 생성
- 기존 배열 요소들 전부 복사해 넣어야 함.
- 연산 시간 : O(n)
public class DynamicArray { private object[] arr = new object[0]; public void Add(object element) { var temp = new obejct[arr.Length + 1]; for(int i = 0; i < arr.Length; i++) { temp[i] = arr[i]; } arr = temp; arr[arr.Length - 1] = element; } }
- 개선안 : 배열 2배씩 확장
public class DynamicArray { private object[] arr; private const int GROWTH_FACTOR = 2; public int Count {get; private set;} public lint Capacity { get {return arr.Length;} } public DynamicArray{int capacity = 16} { arr = new object[capacity]; } ~~~~~~ }
Uploaded by N2T