자료 구조는 효율적으로 데이터를 관리하고 수정, 탐색, 저장할 수 있는 데이터 집합을 말한다.
추상적 자료형이 정의한 연산들을 구현한 구현체로 ADT를 본격적으로 구현하기 시작하는 단계이다. (책장 속 책을 배열하는 방법)
복잡도는 시간 복잡도와 공간 복잡도로 나뉜다.
const arr = ['a', 'b', 'c', 'd'];
const printFirst = (arr) => {
console.log(arr[0]);
}
printFirst(arr);
// a (Step 1)
const arr = ['a', 'b', 'c', 'd'];
const printFirst = (arr) => {
console.log(arr[0]); // (Step 1)
console.log(arr[0]); // (Step 2)
console.log(arr[0]); // (Step 3)
console.log(arr[0]); // (Step 4)
console.log(arr[0]); // (Step 5)
}
n = log₂32
32 / 2 = 16 (1번)
16 / 2 = 8 (2번)
8 / 2 = 4 (3번)
4 / 2 = 2 (4번)
2 / 2 = 1 (5번)
따라서, n = 5
(2를 밑(base)으로 하는 32의 로그는 5)
하지만, BigO는 특성상 밑(base)의 숫자를 제거한다.
n = log32
const arr = ['a', 'b', 'c', 'd', 'e'];
const printAll = (arr) => {
for (let n of arr) console.log(n);
}
printAll(arr);
// a (Step 1)
// b (Step 2)
// c (Step 3)
// d (Step 4)
// e (Step 5)
const arr = ['a', 'b', 'c', 'd', 'e'];
const printAll = (arr) => {
for (let n of arr) console.log(n);
for (let n of arr) console.log(n);
}
const printTwice = (arr) => {
for i of arr {
for j of arr {
console.log(i, j)
}
}
}
method name | Big(o) |
---|---|
push() | O(1) |
pop() | O(1) |
shift() | O(n) |
unshift() | O(n) |
splice() | O(n) |
sort() | O(n log n) |
concat() | O(n) |
slice() | O(n) |
indexOf() | O(n) |
map() | O(n) |
filter() | O(n) |
reduce() | O(n) |
▼ 평균 시간 복잡도
자료 구조 | 접근 | 탐색 | 삽입 | 삭제 |
---|---|---|---|---|
배열 | O(1) | O(n) | O(n) | O(n) |
스택 | O(n) | O(n) | O(1) | O(1) |
큐 | O(n) | O(n) | O(1) | O(1) |
이중 연결 리스트 | O(n) | O(n) | O(1) | O(1) |
해시 테이블 | O(1) | O(1) | O(1) | O(1) |
이진 탐색 트리 | O(log n) | O(log n) | O(log n) | O(log n) |
AVL 트리 | O(log n) | O(log n) | O(log n) | O(log n) |
레드 블랙 트리 | O(log n) | O(log n) | O(log n) | O(log n) |
▼ 최악의 시간 복잡도
자료 구조 | 접근 | 탐색 | 삽입 | 삭제 |
---|---|---|---|---|
배열 | O(1) | O(n) | O(n) | O(n) |
스택 | O(n) | O(n) | O(1) | O(1) |
큐 | O(n) | O(n) | O(1) | O(1) |
이중 연결 리스트 | O(n) | O(n) | O(1) | O(1) |
해시 테이블 | O(n) | O(n) | O(n) | O(n) |
이진 탐색 트리 | O(n) | O(n) | O(n) | O(n) |
AVL 트리 | O(log n) | O(log n) | O(log n) | O(log n) |
레드 블랙 트리 | O(log n) | O(log n) | O(log n) | O(log n) |
Reference.