모름

동적 배열

*동적 배열의 Add, RemoveAt을 구현하는 연습

- 제네릭 클래스 내부에 Array, Count, Capacity 변수 설정.

public class MyList2<T> {
    public T[] _data = new T[1];
    public int Count = 0;
    public int Capacity { get { return _data.Length; } }

 

- Add 함수를 구현

public void Add(T item) {
    //수용공간이 꽉 찼는지 확인 후 꽉 찼으면 크기를 늘려서 배열 생성
    if(Count >= Capacity) {
        T[] array = new T[Count * 2];
        for (int i = 0; i < Count; i++) {
            array[i] = _data[i];
        }
        _data = array;
    }

    //아이템 추가
    _data[Count] = item;
    Count++;
}

 

- Remove At 함수를 구현

public void RemoveAt(int index) {
    //index 지점으로 뒤에 있는 배열을 앞으로 땡긴다.
    for (int i = index; i < Count-1; i++) {
        _data[i] = _data[i + 1];
    }
    //마지막에 남은 데이터는 default 처리한다.
    _data[Count - 1] = default;
    Count--;
}

 

 

*Add와 RemoveAt의 Big-O 표기

 

 

Add 함수: O(1)

RemoveAt 함수: O(n) 

 

 

 

Big-O 표기법 (빅오)

*BIG-O 표기법 - 알고리즘의 효율을 효율적으로 측정하기 위한 표기법 - 수행 시간 보다는 수행의 개수를 대략적으로 판단하기 위함 (시간복잡도) *BIG-O 표기법의 규칙 규칙1. 영향력이 큰 대표 항

morm.tistory.com