일지
알고리즘...24
niamdank
2021. 7. 22. 14:28
선택 알고리즘
n 개의 원소를 가진 정렬되지 않은 집합에서 최소 원소를 찾는 것은 Ω(n)이 소요된다. 더 나아가 i 번째로 작은 원소를 찾을 때 Ο(nlogn)이 소요되는 정렬을 수행 후 i 번째 원소를 찾는다면 Ο(nlogn)이 소요될 것이다.
선택 알고리즘은 이러한 문제를 Ο(n)에 가깝게 수행하기 위한 알고리즘이다.
평균 선형시간 선택 알고리즘
퀵 정렬의 분할 알고리즘을 이용하여 기준 점 좌측 배열에 원하는 순서의 원소가 존재한다면 좌측 배열에 대해서만 재귀적으로 분할 알고리즘을 적용하여 원하는 위치의 원소를 찾을 수 있게 된다.

평균 선형시간 선택 알고리즘
Select(A[], p, r, i)
{
if (p = r) then
{
return A[p];
}
q ← Partition(A, p, r);
k ← q - p + 1;
if (i < k) then
{
return Select(A, p, q - 1, i);
}
else if (i = k) then
{
return A[q];
}
else
{
return Select(A, q + 1, r, i - k);
}
}