자료구조 인터뷰 준비용


Common Data Structure Operations

Data StructureTime ComplexitySpace Complexity
AverageWorstWorst
AccessSearchInsertionDeletionAccessSearchInsertionDeletion
ArrayΘ(1)Θ(n)Θ(n)Θ(n)O(1)O(n)O(n)O(n)O(n)
StackΘ(n)Θ(n)Θ(1)Θ(1)O(n)O(n)O(1)O(1)O(n)
QueueΘ(n)Θ(n)Θ(1)Θ(1)O(n)O(n)O(1)O(1)O(n)
Singly-Linked ListΘ(n)Θ(n)Θ(1)Θ(1)O(n)O(n)O(1)O(1)O(n)
Hash TableN/AΘ(1)Θ(1)Θ(1)N/AO(n)O(n)O(n)O(n)
Binary Search TreeΘ(log(n))Θ(log(n))Θ(log(n))Θ(log(n))O(n)O(n)O(n)O(n)O(n)
B-TreeΘ(log(n))Θ(log(n))Θ(log(n))Θ(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)

Array Sorting Algorithms

AlgorithmTime ComplexitySpace Complexity
BestAverageWorstWorst
QuicksortΩ(n log(n))Θ(n log(n))O(n^2)O(log(n))
MergesortΩ(n log(n))Θ(n log(n))O(n log(n))O(n)
HeapsortΩ(n log(n))Θ(n log(n))O(n log(n))O(1)
Bubble SortΩ(n)Θ(n^2)O(n^2)O(1)
Insertion SortΩ(n)Θ(n^2)O(n^2)O(1)
Selection SortΩ(n^2)Θ(n^2)O(n^2)O(1)
Radix SortΩ(nk)Θ(nk)O(nk)O(n+k)



Quicksort의 Space Complexity가 O(logn)인 이유: recursion이므로 log(n)만큼 반복되는데, 매 recursion마다  constant 사이즈의 stack frame이 할당되므로 O(logn)이다.

Mergesort의 Space Compelxity가 O(n)인 이유: Quicksort와 같은 recursion형태이므로 log(n)같지만 merge를 하는 과정에서 auxiliary array를 사용하기 때문에 O(n)이다.


Merge Sort: https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html







댓글

이 블로그의 인기 게시물

[Django REST Framework] create() vs perform_create()

[웹 보안] CORS란?

3. GRAPHQL FRAGMENTS