선택(Selection) 문제는 n개의 숫자들 중에서 k 번째로 작 은 숫자를 찾는 문제
“1000개의 숫자가 랜덤하게 존재하는 배열 A가 있다. 이 배열에서 300번째 작은 수는 얼마인가?”
이진탐색은 정렬된 입력의 중간에 있는 숫자와 찾고자 하 는 숫자를 비교함으로써, 입력을 1/2로 나눈 두 부분 중 에서 한 부분만을 검색
• 선택 문제는 입력이 정렬되어 있지 않으므로, 입력 숫자 들 중에서 (퀵 정렬에서와 같이) 피봇을 선택하여 아래와 같이 분할

Selection(A, left, right, k) 입력: A[left]~A[right]와 k, 단, 1≤k≤|A|, |A|=right-left+1 출력: A[left]~A[right]에서 k 번째 작은 원소

선택 알고리즘은 데이터 분석을 위한 중앙값 (median) 을 찾는데 활용된다.

'Algorithm > Etc' 카테고리의 다른 글
재귀 시간복잡도 (0) | 2020.09.13 |
---|---|
정렬된 두 배열의 중앙값 찾기 (0) | 2020.09.11 |
Quick sort(퀵 정렬) (0) | 2020.09.11 |
에라토스테니스의 체 (0) | 2020.09.06 |
Merge Sort 시간 복잡도 (0) | 2020.09.05 |