CS
[CS] 객체와 배열의 작업 / 메서드에 따른 시간 복잡도
머지?는 병합입니다
2024. 10. 19. 22:12
1. Object
객체를 사용해야 할 때
- 순서가 필요하지 않은 경우
- 빠른 액세스/삽입 및 제거가 필요한 경우
작업에 따른 시간 복잡도
- 삽입 : O(1)
- 제거 : O(1)
- 액세스 : O(1)
- 검색 : O(N)
메서드 별 시간 복잡도
- Object.keys - O(N)
- Object.values - O(N)
- Object.entries - O(N)
- hasOwnProperty - O(1)
2. Array
배열을 사용해야 할 때
- 순서가 필요한 경우
- 빠른 액세스/삽입 및 제거가 필요한 경우
작업에 따른 시간 복잡도
- 삽입, 제거 : 경우에 따라 다름
- push, pop 의 경우는 O(1)
- shift, unshift 의 경우는 O(N) : idx 0 이후의 모든 인덱스를 수정해야하므로
- 액세스 : O(1)
- 배열 내부에 인덱스가 있기 때문에 객체의 접근방식과 동일
- 검색 : O(N)
메서드 별 시간 복잡도
- push - O(1)
- pop - O(1)
- shift - O(N)
- unshift - O(N)
- concat - O(N)
- slice - O(N)
- splice - O(N)
- sort - O(N * log N)
- forEach/map/filter/reduce/etc. - O(N)