Objects
const instructor = {
firstName = "Kelly",
isInstructor = true,
favoriteNumbers = [1,2,3,4];
}
Objects 의 Big O
Insertion(삽입) - O(1)
Removal(삭제) - O(1)
Searching(탐색) - O(n)
Access(접근) - O(1)
객체는 정렬되어 있을 필요가 없을때 잘 작동하며,
빠른 접근, 입력과 제거를 원할 때 좋다.
여기서 말하는 탐색은 key를 말하는 것이 아니라, 어떤 특정한 정보가 어떤 값에 있는지 확인하는 것을 뜻한다.
(firstName을 찾는 것이 아니라는 뜻이다.)
이때 모든 아이템에 모든 속성을 확인해야 한다.(풀스캔)
Object Methods 의 Big O
Object.keys - O(N)
Object.values - O(N)
Object.entries - O(N)
hasOwnProperty - O(1)
instructor.hasOwnProperty("firstName")
-> instructor라는 객체에 firstName이라는 속성이 있는지 확인하는 메서드 = O(1) 로 정리
Arrays
배열은 대부분 정렬되어 있는 데이터를 위해서 사용한다.
정렬이 필요없다면 배열을 사용하지 않는게 좋다.
Arrays 의 Big O
Insertion - 어디에 Insertion을 하는지에 따라 다름
Removal - 어디를 Removal을 하는지에 따라 다름
Searching - O(N) (선형 시간 (Linear time))
Access - O(1)
Insertion -> 배열의 앞에 Insert 할 경우 O(N) 이다.
(인덱스를 제일 앞부터 새로 배정해줘야 하기 때문에)
Removal 도 마찬가지로 어디에 작업을 하느냐에 따라 달라진다.
push 와 pop 하는 작업은 배열의 끝에서 이뤄지는 작업이라 O(N)만큼 걸리지않는다.
배열을 정렬하는 것은 O(N) 보다 크다...! (비교 + 이동)
정리
- 객체는 거의 모든 것을 더 빠르게 하지만, 정렬이 되어있지 않다.
- 배열은 정렬되어 있지만, 끝에 추가하고 제거하는 작업만 빠르고, 나머지는 비교적 빠르지 않다.
본 내용은 작성자가 (Udemy) JavaScript 알고리즘 & 자료구조 마스터클래스 강의를 듣고 정리 및 메모한 내용입니다. 오역 및 오개념이 있을 수 있으니 바로잡기 위해 문제가 있는 경우 댓글 남겨주시면 매우 감사하겠습니다.
https://www.udemy.com/course/best-javascript-data-structures/
'Algorithm' 카테고리의 다른 글
문제 해결 5단계 - 복습하고 재구성하기 (0) | 2022.07.17 |
---|---|
문제 해결 2단계 ~ (0) | 2022.07.11 |
문제 해결법 + 문제 해결 1단계 (0) | 2022.07.11 |
Big O 표기법 (0) | 2022.07.09 |
[자료구조] 공부하면서 봤던 사이트 링크 (0) | 2022.06.18 |