알고리듬 정렬 알고리듬(2) 퀵 정렬 (중요) 평균 : O(n log n), 최악 : O(n2), 메모리 : O(log n), 안정성 : X 일반/범용적으로 가장 빠름, 분할 정복 알고리듬 어떤 값(pivot)을 기준으로 목록을 하위 목록 2개로 나눔 목록을 나누는 기준은 pivot 보다 작다/크다 위 과정을 재귀적으로 반복 재귀 단계마다 새로운 pivot 을 선정 로무토(Lomuto) 분할법 왼쪽 -> 오른쪽 방향으로... 알고리듬알고리듬 (CLRS) - 7 최악의 경우 Θ(n2). 부분열 A[p..r]에 대한 PARTITION의 실행 시간은 Θ(n). 이때 n = r - p + 1. 대충 바닥/천장 함수 무시하고 보면 마스터 정리에 의해 T(n) = Θ(n lg n)인 걸 알 수 있음. 대충 상수 constant 비율로 깊이가 Θ(lg n)이고, 각 단계의 비용이 O(n)인 재귀 트리를 분할하면 실행 시간 O(n lg n)임. 직관적으로 보면 ... 알고리듬알고리듬 (CLRS) - 6 최대 힙 max-heap의 최대 힙 속성 max-heap property은 루트가 아닌 모든 노드 i에 대해서 힙의 기본적인 연산들은 최대 힙의 높이와 비례하므로 O(lg n) 걸림. MAX-HEAPIFY 함수, O(lg n). MAX-HEAP-INSERT, HEAP-EXTRACT-MAX, HEAP-INCREASE-KEY, HEAP-MAXIMUM 함수, O(lg n). MAX-HEAPIFY는... 알고리듬알고리듬
정렬 알고리듬(2) 퀵 정렬 (중요) 평균 : O(n log n), 최악 : O(n2), 메모리 : O(log n), 안정성 : X 일반/범용적으로 가장 빠름, 분할 정복 알고리듬 어떤 값(pivot)을 기준으로 목록을 하위 목록 2개로 나눔 목록을 나누는 기준은 pivot 보다 작다/크다 위 과정을 재귀적으로 반복 재귀 단계마다 새로운 pivot 을 선정 로무토(Lomuto) 분할법 왼쪽 -> 오른쪽 방향으로... 알고리듬알고리듬 (CLRS) - 7 최악의 경우 Θ(n2). 부분열 A[p..r]에 대한 PARTITION의 실행 시간은 Θ(n). 이때 n = r - p + 1. 대충 바닥/천장 함수 무시하고 보면 마스터 정리에 의해 T(n) = Θ(n lg n)인 걸 알 수 있음. 대충 상수 constant 비율로 깊이가 Θ(lg n)이고, 각 단계의 비용이 O(n)인 재귀 트리를 분할하면 실행 시간 O(n lg n)임. 직관적으로 보면 ... 알고리듬알고리듬 (CLRS) - 6 최대 힙 max-heap의 최대 힙 속성 max-heap property은 루트가 아닌 모든 노드 i에 대해서 힙의 기본적인 연산들은 최대 힙의 높이와 비례하므로 O(lg n) 걸림. MAX-HEAPIFY 함수, O(lg n). MAX-HEAP-INSERT, HEAP-EXTRACT-MAX, HEAP-INCREASE-KEY, HEAP-MAXIMUM 함수, O(lg n). MAX-HEAPIFY는... 알고리듬알고리듬