Lecture 11
How Fast can we sort?
Decision Trees


Corollary ⇒ 따라오는 정리 : Heapsort, Merge sort = O(nlgn) → Θ(nlgn)이된다!
Counting Sort (↔ comparison sort 비교하여 정렬하는 방법)
선형적인 시간으로 정렬할 수 있을까?

이러한 조건을 만들고, 다음과 같이 작동함

실제 수도 코드는 다음과 같다. 왜 뒤에서부터 하는가? → Stable sort의 특성 유지를 위해

Radix sort 기수정렬 based on counting sort → stable sort
Lecture12
Medians 중앙값

일반적인 상황에서의 비교횟수는 n-1 *2 가 되어 2n-2가 되지만, 아이디어를 사용하여
ai와 ai+1을 비교하고, min, ai 을 비교, ai+1, max를 비교 → 총3번의 비교인데 2개씩묶으므로
비교횟수가 3n/2로 줄어든다
Randomized Selection 내가 찾고자 하는 숫자를 찾는 방법

피벗의 위치보다 앞에 있으면 앞의 subarray에 대해 재귀함수로 구현, 뒤에 있으면 뒤의 subarray에 대해서 재귀함수 구현!!
Worst case : 0/n-1로 나뉘는 경우 → O(n^2)
Best case : O(n)
Avg case



이걸 계산해주면,

나와서 O(n)이다.
Medians 을 이용해 원하는 값을 찾는법

5개 묶음 데이터 중에서 median 중간값을 찾는다.

따라서 다음과 같은 예시를 통해 이해해볼수 있다.


점선으로 박스쳐진 곳을 보면, 가장 작은 값들, 가장 큰값들이 위치해있다.


따라서 O(n)이다!