퀵 셀렉트

· 알고리즘
1. 개념 1. 퀵 셀렉트퀵 셀렉트는 주어진 배열에서 k째로 작은 원소를 찾는데 활용되는 알고리즘입니다. 퀵 셀렉트 알고리즘은 퀵 정렬과 비슷한 분할-정복 방식을 활용하지만, 주어진 배열을 모두 정렬하는 대신 특정 원소를 찾는 작업에 초점을 맞춥니다. 퀵 셀렉트 알고리즘은 평균적으로 O(n)의 시간 복잡도를 가지며, 최악의 경우 O(n²)의 시간 복잡도를 갖습니다. 최악의 시간 복잡도가 O(n²)인 이유는 퀵 정렬과 같습니다. 2. 동작 방식주어진 배열에서 피벗을 선택합니다.피벗 원소를 기준으로 배열을 두 개의 부분 배열로 나누고, 피벗 원소보다 작은 원소는 왼쪽 부분 배열로 이동시키고, 반대로 피벗 원소보다 큰 원소는 오른쪽 부분 배열로 이동시킵니다.k(찾고자 하는 k번째 작은 원소의 위치)가 피벗의 ..
#1. 개념 1. 정의 nth_element 알고리즘은 C++ 표준 라이브러리에서 제공하는 알고리즘으로, 주어진 범위 내에서 n번째 요소를 찾아 n번째에 위치시키고, 이 요소보다 작은 모든 요소를 해당 위치 왼쪽(앞으로), 반대로 큰 모든 요소를 해당 위치의 오른쪽(뒤쪽으로)으로 이동시키는 부분 정렬을 수행합니다. 이 알고리즘은 전체 컬렉션을 정렬하는 것보다 효율적이며, 특정 위치의 요소만 필요할 때 유용합니다. 2. 헤더 #include 3. sytax // 기본 사용법 void nth_element(RandomIt first, RandomIt nth, RandomIt last); // 사용자 정의 비교 함수를 사용하는 버전 void nth_element(RandomIt first, RandomIt n..
#1. 문제 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net #2. 풀이 1. nth_element 함수 void nth_element (RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last); void nth_element (RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last, Compare comp); [정의] : C++ 표준 라이브러리에서 제공하는 nth_element 알고리즘은 ..
Hardii2
'퀵 셀렉트' 태그의 글 목록