O(1)
・ 입력 데이터의 크기와 상관없이 항상 일정한 시간이 걸리는 알고리즘
・ 배열의 Random Access
・ Hash
O(N)
・ 입력 데이터의 크기에 비례해서 시간이 소요되는 알고리즘
for (int i = 0; i < N; i++){
// for 가 O(N)의 시간복잡도를 가진다.
}
O(N^2)
・ 입력 데이터의 제곱에 비례해서 시간이 소요되는 알고리즘
for (int i = 0; i < N; i++){
for (int i = 0; i < N; i++){
// 중첩 for문은 O(N^2)의 시간복잡도를 가진다.
}
}
O(logN)
・ 이진탐색(Binary search) // 가장 효율적인 up down과 같음, 한 번 연산할 때마다 연산범위가 반으로
・ n, n/2, n/4, ... , (1/2)^kn
・ (1/2)^kn ≈ 1 // ≈ == ≒ == 근사치
・ n ≈ 2^k
・ logn ≈ K // K는 시행횟수
O(NlogN)
・ Merge sort // 주어진 데이터 집합 중 절반씩 나누는 과정을 먼저 하고, 하나씩 값을 비교하며 다시
// 정렬하는데 입력 개수인 N번만큼 정렬한다.
'자료구조' 카테고리의 다른 글
8주차, 자료구조 연결 리스트(Linked List) (0) | 2022.02.12 |
---|---|
7주차, 자료구조 배열 리스트 (ArrayList) (0) | 2022.02.04 |
7주차, 자료구조 개념, 빅오 표기법 (0) | 2022.02.02 |
6주차, 파이썬으로 sort 구현 (0) | 2022.01.24 |
6주차, 파이썬으로 팩토리얼 구하기 (0) | 2022.01.24 |
댓글