접근하는 경우에는 임의 접근이라는 방법으로 모든 위치에 있는 데이터를 단번에 접근할 수 있으므로, 데이터에 접근하기 위한 시간 복잡도는 O(1)
하지만 데이터를 어디에 저장하느냐에 따라 추가 연산에 대한 시간복잡도의 차이게 존재한다
맨 뒤에 삽입하는 경우
- 다른 데이터 위치에 영향을 주지 않음
- 시간 복잡도는 O(1)
맨 앞에 삽입하는 경우
- 기존 데이터들을 뒤로 한 칸 씩 밀어냄
- 데이터 개수가 N개 일 때, 시간 복잡도 O(N)
중간에 삽입하는 경우
- 해당 뒤의 데이터를 뒤로 한칸 씩 밀어내야함
- 현재 삽입한 데이터 뒤에 있는 데이터 개수만큼 미는 연산
- 밀어야하는 데이터 개수가 N개일 때 시간 복잡도O(N)
고려사항
배열의 경우 데이터에 자주 접근하거나 읽어야 하는 경우 좋은 성능을 낼 수 있지만 메모리 공간을 충분히 확보해야하는 단점이 존재해 메모리 낭비가 발생할 수 있으므로 2가지를 고려해야한다
- 할당할 수 있는 메모리 크기 확인
보통 정수형 1차원 배열은 1000만 개, 2차원 배열은 3000 * 3000 크기를 최대로 생각 - 중간에 데이터 삽입이 많은 지 확인
선형 자료 구조이기 떄문에 빈번히 삽입되면 시간 복잡도가 높아 효율적이지 못하다
'CS > 알고리즘' 카테고리의 다른 글
스트림(Stream) (0) | 2024.08.01 |
---|---|
[JAVA] 배열 제어하기 예제 - 스트림 (0) | 2024.07.31 |
메서드 - 람다식 (compare) (0) | 2024.07.31 |
문자열 (0) | 2024.07.31 |
Primitive Type & Reference Type (0) | 2024.07.30 |