공부일지

배열[작성중] 본문

코딩/자료구조

배열[작성중]

이하택 2023. 10. 24. 13:03

연속적 동형 데이터 타입(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

'코딩 > 자료구조' 카테고리의 다른 글

자료구조  (0) 2023.10.24